-3
当時私は暗号化機能を実行しようとしていましたが、最後の1時間は問題がありました。アレイ印刷時のエラー
まずは文字と記号だけで機能し、完璧に機能しましたが、数字を追加するとすべてが間違っていきます。
コードは番号なしでそこに行く:
function encryptVerman($text, $length_text) {
//GLOBAL VARIABLES
$textToNumbersArray = array("A" => 0, "B" => 1, "C" => 2, "D" => 3, "E" => 4, "F" => 5, "G" => 6,"H" => 7, "I" => 8, "J" => 9, "K" => 10, "L" => 11, "M" => 12, "N" => 13, "O" => 14, "P" => 15, "Q" => 16, "R" => 17, "S" => 18, "T" => 19, "U" => 20, "V" => 21, "W" => 22, "X" => 23, "Y" => 24, "Z" => 25);
$numbersToTextArray = array(0 => "A", 1 => "B", 2 => "C", 3 => "D", 4 => "E", 5 => "F", 6 => "G", 7 => "H", 8 => "I", 9 => "J", 10 => "K", 11 => "L", 12 => "M", 13 => "N", 14 => "O", 15 => "P", 16 => "Q", 17 => "R", 18 => "S", 19 => "T", 20 => "U", 21 => "V", 22 => "W", 23 => "X", 24 => "Y", 25 => "Z");
$characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//KEY
$charactersLength = strlen($characters);
$key = "";
for ($i=0; $i < $length_text; $i++) {
$key .= $characters[rand(0, $charactersLength - 1)];
$key = (string)$key;
}
//1. KEY AND TEXT TO NUMBERS
$keyToNumbers = array();
$textToNumbers = array();
for ($i=0; $i < strlen($key); $i++) {
foreach ($textToNumbersArray as $key_foreach_to => $value_foreach_to) {
if ($key[$i] == $key_foreach_to) {
$keyToNumbers[] = (int)$value_foreach_to;
}
if ($text[$i] == $key_foreach_to) {
$textToNumbers[] = (int)$value_foreach_to;
}
}
}
//2. SUM BETWEEN KEYNUMBERS AND TEXTNUMBERS
$sumKeyAndText = array();
for ($i=0; $i < count($keyToNumbers); $i++) {
$sumKeyAndText[] = ($keyToNumbers[$i] + $textToNumbers[$i]);
if ($sumKeyAndText[$i] > 25) {
$sumKeyAndText[$i] = $sumKeyAndText[$i] - 26;
} else {
$sumKeyAndText[$i];
}
}
for ($i=0; $i < count($sumKeyAndText); $i++) {
echo $key . " Key" . "<br>";
echo $text . " Text" . "<br>";
echo $keyToNumbers[$i] . " Key to Numbers" . "<br>";
echo $textToNumbers[$i] . " Text to Numbers" . "<br>";
echo $sumKeyAndText[$i] . " Sum Key and Text" . "<br>";
echo "<br>";
}
そして、ここでHTMLフォーム:
<form action="" method="POST">
<input type="text" name="text">
<input type="submit" name="submit">
</form>
<?php
include("includes/encrypt.php");
if(isset($_POST["submit"])) {
$text = "";
$text = $_POST["text"];
$text = strtoupper($text);
$text_length = strlen($text);
$text = (string)$text;
echo encryptVerman($text, $text_length);
}
?>
そして、我々は2列にしてに番号を追加ランダムなキージェネレータと私たちは、10の方法を合算して問題が出てくるようにします。
まず、キーが数字でない場合、オペレーションは2回実行されます。しかし、キーが文字の場合、操作は2回行われます。
番号を持つコード:
function encryptVerman($text, $length_text) {
//GLOBAL VARIABLES
$textToNumbersArray = array("A" => 0, "B" => 1, "C" => 2, "D" => 3, "E" => 4, "F" => 5, "G" => 6,"H" => 7, "I" => 8, "J" => 9, "K" => 10, "L" => 11, "M" => 12, "N" => 13, "O" => 14, "P" => 15, "Q" => 16, "R" => 17, "S" => 18, "T" => 19, "U" => 20, "V" => 21, "W" => 22, "X" => 23, "Y" => 24, "Z" => 25, "0" => 26, "1" => 27, "2" => 28, "3" => 29, "4" => 30, "5" => 31, "6" => 32, "7" => 33, "8" => 34, "9" => 35);
$numbersToTextArray = array(0 => "A", 1 => "B", 2 => "C", 3 => "D", 4 => "E", 5 => "F", 6 => "G", 7 => "H", 8 => "I", 9 => "J", 10 => "K", 11 => "L", 12 => "M", 13 => "N", 14 => "O", 15 => "P", 16 => "Q", 17 => "R", 18 => "S", 19 => "T", 20 => "U", 21 => "V", 22 => "W", 23 => "X", 24 => "Y", 25 => "Z", 26 => "0", 27 => "1", 28 => "2", 29 => "3", 30 => "4", 31 => "5", 32 => "6", 33 => "7", 34 => "8", 35 => "9");
$characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//KEY
$charactersLength = strlen($characters);
$key = "";
for ($i=0; $i < $length_text; $i++) {
$key .= $characters[rand(0, $charactersLength - 1)];
$key = (string)$key;
}
//1. KEY AND TEXT TO NUMBERS
$keyToNumbers = array();
$textToNumbers = array();
for ($i=0; $i < strlen($key); $i++) {
foreach ($textToNumbersArray as $key_foreach_to => $value_foreach_to) {
if ($key[$i] == $key_foreach_to) {
$keyToNumbers[] = (int)$value_foreach_to;
}
if ($text[$i] == $key_foreach_to) {
$textToNumbers[] = (int)$value_foreach_to;
}
}
}
//2. SUM BETWEEN KEYNUMBERS AND TEXTNUMBERS
$sumKeyAndText = array();
for ($i=0; $i < count($keyToNumbers); $i++) {
$sumKeyAndText[] = ($keyToNumbers[$i] + $textToNumbers[$i]);
if ($sumKeyAndText[$i] > 35) {
$sumKeyAndText[$i] = $sumKeyAndText[$i] - 36;
} else {
$sumKeyAndText[$i];
}
}
for ($i=0; $i < count($sumKeyAndText); $i++) {
echo $key . " Key" . "<br>";
echo $text . " Text" . "<br>";
echo $keyToNumbers[$i] . " Key to Numbers" . "<br>";
echo $textToNumbers[$i] . " Text to Numbers" . "<br>";
echo $sumKeyAndText[$i] . " Sum Key and Text" . "<br>";
echo "<br>";
}
ありがとう!
コードをクリアしていますか? – Virb
エラーが見つかりました。起こっていたことは、配列の "0"がヌル値として覚えられていたので、私はそれを "ゼロ"のために変更し、それがうまくいったということです。私は "ゼロ"を "0"に変換するだけで済むようになりました。 – DeFabregas