PHP使用TripleDes,PKCS7和ECB加密/解密

前端之家收集整理的这篇文章主要介绍了PHP使用TripleDes,PKCS7和ECB加密/解密前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的加密功能正常工作但是我无法弄清楚如何获得解密功能以提供正确的输出.

这是我的加密功能

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输出,但是当我去解密时它什么都不返回(空白区域).

我不是很精通加密/解密所以任何帮助都非常感谢!!

感谢任何看过我问题的人.我想我已经解决了,这是我的完整解决方案.希望它能帮助遇到类似问题的其他人:
function 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);
}

在运行mycrypt_decrypt函数之前,我必须添加相同的代码以正确的格式生成密钥.

原文链接:https://www.f2er.com/php/135189.html

猜你在找的PHP相关文章