加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 18:16:13 所属栏目: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 t
我的加密功能正常工作但是我无法弄清楚如何获得解密功能以提供正确的输出.

这是我的加密功能:

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函数之前,我必须添加相同的代码以正确的格式生成密钥.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读