2016-09-22 17 views
0

私はこれらのコードを暗号化と復号化に使用しています。diacritsで暗号化と復号化を行います

enter image description here

これは、テキストのために良い作品(例えば: "これがテキストである")、発音区別符号(つまりはないことを意味する:ěščřžýáíéúů)withnoutです。 しかし、私はこの特殊文字(ěščřžýáíéúů)でテキストを暗号化し、解読する必要があります。

誰かが私を助けてくれますか?

すべての回答とサポートに感謝します。

よろしくお願いいたします。 M.

define ("ENCRYPTION_KEY", "QaY7e4d1c"); 
$string= "This is a text"; // -> this work alright 
//$string= "áýžřčšě"; I NEED THIS TEXT ENCRYPT AND DECRTYPT 
echo $encrypted = encrypt($string, ENCRYPTION_KEY); 
echo "<br />"; 
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY); 
function encrypt ($pure_string,$encryption_key) 
{ 
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB); 
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND); 
$encrypted_string =    mcrypt_encrypt(MCRYPT_BLOWFISH,$encryption_key,utf8_encode($pure_string),MCRYPT_MODE_ECB,$iv); 
return $encrypted_string; 
} 
function decrypt ($encrypted_string,$encryption_key) 
{ 
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB); 
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND); 
$decrypted_string =  mcrypt_decrypt(MCRYPT_BLOWFISH,$encryption_key,$encrypted_string,MCRYPT_MODE_ECB ,$iv); 
return $decrypted_string; 
} 
+2

画像はあなたのコードを入力してくださいあまり助けにはなりません。 – Dave

+0

私は質問の最後にコードを追加します。 – Martin

+1

mcryptを使用しないことをお勧めします。これはabandonwareです。何年も更新されておらず、標準のPKCS#7(néePKCS#5)パディングをサポートしていません。バイナリでも使用できない非標準のヌルパディングデータ。 mcryptには、2003年にさかのぼる多くの傑出したバグ(https://sourceforge.net/p/mcrypt/bugs/)がありました。代わりに[defuse](https://github.com/defuse/php-encryption)の使用を検討するか、 [RNCryptor](https://github.com/RNCryptor)、これらは完全な解決策を提供し、維持管理され、正しいものです。 – zaph

答えて

1

あなたの暗号化機能でutf8_encodeを呼び出すことができますが、復号化するとき、彼らはお互いを補完していないスタンドとしてあなたの関数ので、utf8_decodeを呼び出していません。

utf8_encodeへの電話を完全に削除することをおすすめします。 mcrypt_encryptはあなたの文字列が使用するエンコーディングを気にしないので、渡すものは何でも返ってくるでしょう。あなたのスクリプトは、私はそれを削除する場合は私のために正常に動作します:

$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, $pure_string, MCRYPT_MODE_ECB, $iv); 

私もこれを読んでお勧めしたい:https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-re-doing-it-wrong

+1

ありがとうございました...あなたは私をとても助けました。私はutf8_endoceを削除しました。に追加して、どのように必要なのですか? – Martin