我的加密功能正常工作但是我无法弄清楚如何获得解密功能以提供正确的输出.
这是我的加密功能:
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,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,strlen($data) - $pad); }
现在我正在使用测试密钥,我正在尝试加密1234567.我从我正在寻找的加密中得到base64输出,但是当我去解密时它什么都不返回(空白区域).
我不是很精通加密/解密所以任何帮助都非常感谢!!
感谢任何看过我问题的人.我想我已经解决了,这是我的完整解决方案.希望它能帮助遇到类似问题的其他人:
原文链接:https://www.f2er.com/php/135189.htmlfunction Encrypt($data,'ecb'); return base64_encode($encData); }
这是新的解密功能.
function Decrypt($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,8); $data = base64_decode($data); $data = mcrypt_decrypt('tripledes','ecb'); $len = strlen($data); $pad = ord($data[$len-1]); return substr($data,strlen($data) - $pad); }