暗号化と復号化 (Rijndael 256、ecb モード) を 2 つの異なるコンポーネントで実行しようとしています:
1. PHP - サーバー側 (mcrypt を使用)
2. C++ - クライアント側 (gcrypt を使用)
クライアント側が(サーバー側で作成された)暗号化されたデータを正しく復号化できなかったときに問題に遭遇した
ので...チェックしました:
1.初期ベクトル-同じ(32長さ)
2.キー-再び同じ両側のキー..
だから私はC++でデータを暗号化するいくつかのコードを書きました(phpのように同じパラメータで)
、暗号化されたデータには異なるバイトが含まれていることがわかりました(おそらくエンコーディングの問題??)
ヘルプ
PHP - MCrypt
// Encrypt Function
function mc_encrypt($encrypt, $mc_key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$iv = "static_init_vector_static_init_v";
echo "IV-Size: " . $iv_size . "\n";
echo "IV: " . $iv . "\n";
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mc_key, $encrypt, MCRYPT_MODE_ECB, $iv);
print_hex($passcrypt);
return $encode;
}
mc_encrypt("Some text which should be encrypted...","keykeykeykeykeykeykeykeykeykeyke");
C++ コードをコメントに投稿します
ありがとう、ジョニー・デップ