2016-08-27 6 views
-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); 

    } 

?> 

enter image description here

そして、我々は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>"; 
} 

enter image description here

ありがとう!

+0

コードをクリアしていますか? – Virb

+0

エラーが見つかりました。起こっていたことは、配列の "0"がヌル値として覚えられていたので、私はそれを "ゼロ"のために変更し、それがうまくいったということです。私は "ゼロ"を "0"に変換するだけで済むようになりました。 – DeFabregas

答えて

0

エラーが見つかりました。起こっていたことは、配列の "0"がヌル値として覚えられていたので、私はそれを "ゼロ"のために変更し、それがうまくいったということです。私は "ゼロ"を "0"に変換するだけで済むようになりました。