2017-06-22 6 views
-3

私のコードで何が間違っているのでしょうか?このコードは、指定された文字列を暗号化するためのものです。それは暗号化をかなりうまく行いますが、暗号化された値をエコーすると、それに数値が追加されます。ここでは、コードは次のとおりです。私の暗号化コードでPHPのエラーが発生しました

$keys = "Bb94tU1LSSLgPKNu"; 
$encrypt = array(); 

// this contains the key/value pair i used for the encryption 
$arrayEncrypt = array("a"=>"g","b"=>"h","c"=>"i","d"=>"j","e"=>"k","f"=>"l","g"=>"m","h"=>"n","i"=>"o","j"=>"p","k"=>"q","l"=>"r", "m"=>"s","n"=>"t","o"=>"u","p"=>"v","q"=>"w","r"=>"x","s"=>"y","t"=>"z","u"=>"a","v"=>"b","w"=>"c","x"=>"d","y"=>"e","z"=>"f","A"=>"G","B"=>"H","C"=>"I","D"=>"J","E"=>"K","F"=>"L","G"=>"M","H"=>"N","I"=>"O","J"=>"P","K"=>"Q","L"=>"R","M"=>"S","N"=>"T","O"=>"U","P"=>"V","Q"=>"W","R"=>"X","S"=>"Y","T"=>"Z","U"=>"A","V"=>"B","W"=>"C","X"=>"D","Y"=>"E","Z"=>"F","0"=>"2","1"=>"4","2"=>"6","3"=>"8","4"=>"0","5"=>"9","6"=>"7","7"=>"5","8"=>"3","9"=>"1"); 

for ($i = 0; $i < strlen($keys); $i++) { 
    if (array_key_exists($keys[$i], $arrayEncrypt)) { 
     foreach ($arrayEncrypt as $key => $letter) { 
      if ($keys[$i] == $key) { 
       // appends the values of each in $encrypt array 
       array_push($encrypt, $letter); 
      } 
     } 
    } 
} 

$encryptedValue = ""; 
foreach ($encrypt as $encrypted) { 
    $encryptedValue .= $encrypted; 
    echo $encryptedValue; 
} 

それは出力します。

H2h210z2A24R2Y2Y2R2m2V2Q2T2a2 

の代わりに:どのような場合には

Hh10zA4RYYRmVQTa 
+0

このコードは機能しません。セミコロンがなく、 '@ $ encryptedValue = ...'のようなことをしているだけでなく、すべてを修正しても出力は生成されません。 – Enstage

+0

非js、css、またはhtmlコードにスニペット機能を使用しないでください。 – Daedalus

+0

@Enstage私は完全なコードを貼り付け、あなたが言及した行を修正しました。今すぐチェックできますか? – Nathileo

答えて

0

を、あなたはちょうど私が代わりに$を使用しようとし、それを複雑に超えていました名前を使用して一致する値を取得します。 str_split()は文字の配列を取得するために$ arrayEncrypt [$ value]の単なる問題です。元に戻すには、array_flip()を使用します。

暗号化と復号化に便利な機能を追加しました。お楽しみください

<?php 
// 1 to encrypt 
// 2 to decrypt 
function encdec($do, $keys){ 
    $arrayEncrypt = array("a"=>"g","b"=>"h","c"=>"i","d"=>"j","e"=>"k","f"=>"l","g"=>"m","h"=>"n","i"=>"o","j"=>"p","k"=>"q","l"=>"r", "m"=>"s","n"=>"t","o"=>"u","p"=>"v","q"=>"w","r"=>"x","s"=>"y","t"=>"z","u"=>"a","v"=>"b","w"=>"c","x"=>"d","y"=>"e","z"=>"f","A"=>"G","B"=>"H","C"=>"I","D"=>"J","E"=>"K","F"=>"L","G"=>"M","H"=>"N","I"=>"O","J"=>"P","K"=>"Q","L"=>"R","M"=>"S","N"=>"T","O"=>"U","P"=>"V","Q"=>"W","R"=>"X","S"=>"Y","T"=>"Z","U"=>"A","V"=>"B","W"=>"C","X"=>"D","Y"=>"E","Z"=>"F","0"=>"2","1"=>"4","2"=>"6","3"=>"8","4"=>"0","5"=>"9","6"=>"7","7"=>"5","8"=>"3","9"=>"1"); 

    if ($do==2){ 
     $arrayEncrypt=array_flip($arrayEncrypt); 
    } 

    $chars = str_split($keys); 
    $encryptedValue=""; 

    foreach($chars as $char=>$value){ 
     $encryptedValue .= $arrayEncrypt[$value]; 
    } 

    return $encryptedValue; 
} 

echo "Encrypted key: ".encdec(1,"Bb94tU1LSSLgPKNu")."<br />"; 
echo "Decrypted key: ".encdec(2,"Hh10zA4RYYRmVQTa")."<br />"; 

?> 
+0

それは働いた。ありがとう@パトリック。私はPHP初心者です。私はこの答えで新しい何かを学んだ – Nathileo

+0

受け入れているとマークしてください –

関連する問題