私の暗号化機能は正常に動作していますが、復号化機能を使って適切な出力を得る方法はわかりません。ここでTripleDes、PKCS7、ECBを使用したPHPの暗号化/復号化
は、私の暗号化機能である:ここで
function Encrypt($data, $secret)
{
//Generate a key from a hash
$key = md5(utf8_encode($secret), true);
//Take first 8 bytes of $key and append them to the end of $key.
$key .= substr($key, 0, 8);
//Pad for PKCS7
$blockSize = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = $blockSize - ($len % $blockSize);
$data .= str_repeat(chr($pad), $pad);
//Encrypt data
$encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb');
return base64_encode($encData);
}
は私の復号化機能である:
function Decrypt($data, $secret)
{
$text = base64_decode($data);
$data = mcrypt_decrypt('tripledes', $secret, $text, 'ecb');
$block = mcrypt_get_block_size('tripledes', 'ecb');
$pad = ord($data[($len = strlen($data)) - 1]);
return substr($data, 0, strlen($data) - $pad);
}
今、私はtest
のキーを使用していますが、私は1234567
を暗号化しようとしています。私は、私が探している暗号化からbase64の出力を取得しますが、私は復号化に行くと何も返しません(空白の領域)。
私は暗号化/復号化にあまり精通していないので、どんな助けでも大歓迎です!
3DESをAES、ECBをCBCに置き換え、MACを追加することをお勧めします。 – CodesInChaos
ご推薦いただきありがとうございます@コードインカオス。私はそのような詳細を変更することはできませんし、おそらく安全性は低いですが、私が持っているものを使用しなければなりません。 –