php生成aes密钥,为AES加密生成密钥的安全性

我在研究互联网上的AES加密时发现了以下代码。 在这段代码中,我发现key和iv是使用hash function生成的,并使用sha256 。 我想知道这种方法对于使用PHP加密文本是否安全。

我在网上找到的代码如下,<?php

function encrypt_decrypt($action, $string) {

$output = false;

$encrypt_method = "AES-256-CBC";

$secret_key = 'This is my secret key';

$secret_iv = 'This is my secret iv';

// hash

$key = hash('sha256', $secret_key);

// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning

$iv = substr(hash('sha256', $secret_iv), 0, 16);

if ( $action == 'encrypt' ) {

$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);

$output = base64_encode($output);

} else if( $action == 'decrypt' ) {

$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);

}

return $output;

}

$plain_txt = "This is my plain text";

echo "Plain Text =" .$plain_txt. "\n";

$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);

echo "Encrypted Text = " .$encrypted_txt. "\n";

$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);

echo "Decrypted Text =" .$decrypted_txt. "\n";

if ( $plain_txt === $decrypted_txt ) echo "SUCCESS";

else echo "FAILED";

echo "\n";

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值