以下代码实现了使用DES算法对一个字符串进行加密和解密的功能。
具体来说,encrypt() 函数接受两个参数:要加密的数据和密钥。它使用 OpenSSL 库中的 openssl_encrypt() 函数将数据加密,使用 CBC 模式和随机生成的 8 字节初始化向量 (IV)。然后,将 IV 和加密后的数据组合在一起,并对其进行 Base64 编码以便传输或存储。最后,函数返回加密后的数据字符串。
decrypt() 函数接受两个参数:加密后的数据和密钥。首先,它使用 Base64 解码将数据还原为二进制格式。然后,从数据中提取出前 8 个字节的 IV 和剩余的字节作为加密后的数据。使用相同的密钥和 IV,使用 openssl_decrypt() 函数对加密后的数据进行解密,返回解密后的原始数据字符串。
以下是 PHP 中使用DES加密和解密的示例代码:
<?php function encrypt($data, $key) { $iv = openssl_random_pseudo_bytes(8); $cipher = openssl_encrypt($data, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv); $encrypted = $iv . $cipher; return base64_encode($encrypted); } function decrypt($data, $key) { $data = base64_decode($data); $iv = substr($data, 0, 8); $cipher = substr($data, 8); $decrypted = openssl_decrypt($cipher, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv); return $decrypted; } $data = "This is a secret message."; $key = "12345678"; $encrypted = encrypt($data, $key); echo "Encrypted: " . $encrypted . "\n"; $decrypted = decrypt($encrypted, $key); echo "Decrypted: " . $decrypted . "\n"; ?>
请注意,此代码使用了随机生成的初始化向量 (IV) 来增加安全性,并将加密后的数据和 IV 结合在一起,以便在解密时使用。
最后,在示例代码中,我们定义了一个字符串变量和一个密钥变量,将字符串加密并输出加密后的结果,然后将加密后的结果解密并输出解密后的原始字符串。
评论