2016-08-27 6 views
-3

In diesen Tagen versuche ich, eine Verschlüsselungsfunktion zu tun, aber auf der letzten hour habe ich einige Probleme auf sie.Fehler beim Drucken von Arrays

Zuerst machte ich die Funktion arbeiten nur mit Buchstaben und Symbolen und funktioniert perfekt, aber wenn ich Zahlen addiere beginnt alles falsch zu gehen.

Es ohne die Zahlen der Code geht:

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>"; 
} 

Und hier das HTML-Formular:

<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

Und dann, wenn wir die Zahlen in den beiden Feldern hinzufügen und in der zufällige Schlüsselgenerator und wir summieren 10 zur if Methode erscheinen die Probleme.

Zunächst, wenn der Schlüssel keine Nummer ist, ist die Operation zweimal durchgeführt. Wenn der Schlüssel jedoch ein Buchstabe ist, wird die Operation zweimal ausgeführt.

Der Code mit Zahlen:

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

Dank!

+0

Sind Sie mit Ihren Codes klar? – Virb

+0

Ich habe den Fehler gefunden. Was passiert ist, ist, dass die "0" auf dem Array als Null-Wert erhalten wurde, so änderte ich es für eine "Null" und dann hat es funktioniert. Nachdem ich nur die "Null" in eine "0" umwandeln musste, war es fertig! – DeFabregas

Antwort

0

Ich habe den Fehler gefunden. Was passiert ist, ist, dass die "0" auf dem Array als Null-Wert erhalten wurde, so änderte ich es für eine "Null" und dann hat es funktioniert. Nachdem ich nur die "Null" in eine "0" umwandeln musste, war es fertig!

Verwandte Themen