您现在的位置是:首页 >技术交流 >php openssl支持的加密算法和加密模式及加密解密示范实例网站首页技术交流

php openssl支持的加密算法和加密模式及加密解密示范实例

YUJIANYUE 2024-06-06 12:00:02
简介php openssl支持的加密算法和加密模式及加密解密示范实例

<style>
textarea{width:88%;height:188px;}
</style><?php
// 定义要加密的数据
$data = '我是中文@This is a secret message@我就是中文';
echo "<p>打印原始未加密数据==>$data</p>";

$cipher = 'aes-128-cbc';// 定义加密算法和加密模式
$key = openssl_random_pseudo_bytes(128);//生成随机密钥

// 加密数据
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = array(
'encrypted' => base64_encode($encrypted),
'iv' => base64_encode($iv),
'key' => base64_encode($key)
);
$jiam = json_encode($encrypted_data,JSON_PRETTY_PRINT);
echo "<p>打印加密后的数据</p><textarea>$jiam</textarea>";

// 解密数据
$decrypted = openssl_decrypt(base64_decode($encrypted_data['encrypted']), $cipher, base64_decode($encrypted_data['key']), OPENSSL_RAW_DATA, base64_decode($encrypted_data['iv']));
echo "<p>打印解密后的数据==>$decrypted</p>";

?>

php openssl支持的加密算法和加密模式:
加密算法:
1. AES(Advanced Encryption Standard):128位、192位和256位;
2. Blowfish:128位;
3. CAST5:128位;
4. IDEA(International Data Encryption Algorithm):128位;
5. RC2(Rivest Cipher 2):128位;
6. RC4(Rivest Cipher 4):128位;
7. RC5(Rivest Cipher 5):128位;
8. SEED(KISA SEED):128位;
9. Triple DES(3DES):168位。
加密模式:
1. CBC(Cipher Block Chaining):分组加密模式,每个分组使用前一个分组的密文作为初始向量;
2. CFB(Cipher Feedback):反馈加密模式,每个分组使用前一个分组的密文作为“反馈”;
3. ECB(Electronic Code Book):电子密码本模式,每个分组独立加密;
4. OFB(Output Feedback):输出反馈加密模式,每个分组使用前一个分组的密文作为“输出反馈”;
5. GCM(Galois/Counter Mode):通过在CTR模式下增加Galois域上的多项式运算实现的加密模式;
6. CTR(Counter):计数器模式,每个分组使用一个计数器和密钥生成密文。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。