php mcrypt_encrypt 解密后字符串长度,php aes加解密,mcrypt_encrypt 和openssl_encrypt

本文展示了如何在PHP7.1及更高版本中,由于mcrypt_encrypt函数被弃用,如何将AES加密解密操作迁移到openssl_encrypt。提供了加密和解密的示例函数,以及实际的加密解密过程,帮助开发者进行代码更新。
摘要由CSDN通过智能技术生成

php7.1如下版本使用php

/*

* mcrypt_encrypt 加密

* php7.1开始被丢弃 可使用openssl_encrypt

* */

function aes_encrypt($content){

$privateKey = "abcdef1234567890";

$iv = "helloworld123456";

$content = $this->pkcs7_pad($content); //支持openssl_decrypt 解密,

$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$content,MCRYPT_MODE_CBC,$iv);

$based_encrypted = base64_encode($encrypted);

return $based_encrypted;

}

/*

* mcrypt_encrypt 解密

* */

function aes_decrypt($content){

$privateKey = "abcdef1234567890";

$iv = "helloworld123456";

$content = base64_decode($content);

$encrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$privateKey,$content,MCRYPT_MODE_CBC,$iv);

return $encrypted;

}

function pkcs7_pad($str){

$len = mb_strlen($str, '8bit');

$c = 16 - ($len % 16);

$str .= str_repeat(chr($c), $c);

return $str;

}

php7.1开始被丢弃 可使用openssl_encrypt

/**

* 解密字符串

* @param string $data 字符串

* @param string $key 加密key

* @return string

*/

function decryptWithOpenssl($data,$key,$iv){

return openssl_decrypt(base64_decode($data),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);

}

/**

* 加密字符串

* 参考网站: https://segmentfault.com/q/1010000009624263

* @param string $data 字符串

* @param string $key 加密key

* @return string

*/

function encryptWithOpenssl($data,$key,$iv){

return base64_encode(openssl_encrypt($data,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));

}

使用方法html

header("Content-type:text/html; charset=utf-8");

$privateKey = "abcdef1234567890";

$iv = "helloworld123456";

echo "

";

$content = '章节内容加密测试121212ksjflkdjslfsdjfljs章节内容测试end';

$aesencrypt = aes_encrypt($content);

echo "aes_encrypt加密:".($aesencrypt);

echo "
";

$encrypt_openssl = aes_decrypt($aesencrypt);

echo "aes_decrypt解密:".($encrypt_openssl);

echo "
";

$encrypt_openssl = decryptWithOpenssl($aesencrypt,$privateKey,$iv);

echo "openssl_encrypt解密:".($encrypt_openssl);

echo "
";

$encrypt_openssl = encryptWithOpenssl($content,$privateKey,$iv);

echo "openssl_encrypt加密:".($encrypt_openssl);

echo "
";

$decrypt_openssl =decryptWithOpenssl($encrypt_openssl,$privateKey,$iv);

echo "openssl_encrypt解密:".($decrypt_openssl);

echo "
";

$decrypt_openssl = aes_decrypt($encrypt_openssl);

echo "aes_decrypt解密:".($decrypt_openssl);

echo "
";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值