mysql 5.6 aes php,PHP Openssl解密AES Mysql加密

openssl_encrypt()和openssl_decrypt()静默将密钥切割为最大16字节长度(至少对于aes-128-ecb)

$key1 = hex2bin(openssl_digest('mysecretphrase','sha512'));

$key2 = substr($key1,16);

$key3 = substr($key1,15);

$method = 'aes-128-ecb';

$in = 'testvalue';

$data1 = base64_decode(openssl_encrypt($in,$method,$key1));

$data2 = base64_decode(openssl_encrypt($in,$key2));

$data3 = base64_decode(openssl_encrypt($in,$key3));

var_dump(

array(

'key1'=>bin2hex($key1),'key2'=>bin2hex($key2),'key3'=>bin2hex($key3),'data1'=>bin2hex($data1),'data2'=>bin2hex($data2),'data3'=>bin2hex($data3),'data1==data2'=>($data1===$data2),'data1==data3'=>($data1===$data3)

)

);

?>

结果:

array(8) {

["key1"]=>string(128) "5fe76dfd5b75cf7cf68fae85d26fcc9b7951806ad6daaa71d843c6ec0e0ec9233a828ad9b60986a43d734983c8a0a50d3a0a49ec5ac196cfcc136aa16e0c5f89"

["key2"]=>string(32) "5fe76dfd5b75cf7cf68fae85d26fcc9b"

["key3"]=>string(30) "5fe76dfd5b75cf7cf68fae85d26fcc"

["data1"]=>string(32) "eb69e89312c1f7b9522d0e66346f2029"

["data2"]=>string(32) "eb69e89312c1f7b9522d0e66346f2029"

["data3"]=>string(32) "664f5a28d241f959beac350f2314b079"

["data1==data2"]=>bool(true)

["data1==data3"]=>bool(false)

}

在MysqL中,AES_ENCRYPT()和AES_DECRYPT()使用全长密钥

SELECT

HEX(AES_ENCRYPT('testvalue',UNHEX(SHA2('mysecretphrase',512)))) AS l_full,HEX(AES_ENCRYPT('testvalue',SUBSTR(UNHEX(SHA2('mysecretphrase',512)),1,16))) AS l_16,15))) AS l_15;

结果:

l_full | l_16 | l_15

---------------------------------|----------------------------------|----------------------------------------

A88DD1EFB377FD31A0EFA55EA29BA8C6 | EB69E89312C1F7B9522D0E66346F2029 | 664F5A28D241F959BEAC350F2314B079

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值