Loading... 在PHP中,`mcrypt_encrypt`是一个已被废弃的加密函数,因为它存在一些安全问题和限制。从PHP 7.1版本开始,`mcrypt_encrypt`已经被标记为废弃,并在PHP 7.2版本中被移除。因此,我们需要找到一个替代方案,`openssl_encrypt`就是一个很好的选择。`openssl_encrypt`是OpenSSL库的一部分,提供了更强大、更安全的加密功能。 在实际操作中,我们需要将 `mcrypt_encrypt`的代码转换为使用 `openssl_encrypt`。以下是一个简单的示例: 假设我们有以下 `mcrypt_encrypt`的代码: ```php <?php $key = 'mysecurekey'; $plaintext = 'Hello, World!'; $cipher = MCRYPT_RIJNDAEL_128; $iv_size = mcrypt_get_iv_size($cipher, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $ciphertext = mcrypt_encrypt($cipher, $key, $plaintext, MCRYPT_MODE_CBC, $iv); ?> ``` 我们可以这样转换为 `openssl_encrypt`: ```php <?php $key = 'mysecurekey'; $plaintext = 'Hello, World!'; $cipher = 'AES-128-CBC'; $iv_size = openssl_cipher_iv_length($cipher); $iv = openssl_random_pseudo_bytes($iv_size); $ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); ?> ``` 首先,你需要注意的是,`MCRYPT_RIJNDAEL_128`在OpenSSL中对应的是 `AES-128-CBC`。然后,我们使用 `openssl_cipher_iv_length`来获取初始化向量(IV)的大小,然后使用 `openssl_random_pseudo_bytes`来生成IV。最后,我们使用 `openssl_encrypt`来加密明文。 然而,上述示例中的密钥长度可能不符合 `AES-128-CBC`的要求。在AES中,密钥的长度必须是16、24或32字节。如果你的密钥长度不符合要求,你可以使用哈希函数(如SHA256)来生成一个新的密钥: ```php <?php $key = 'mysecurekey'; $key = hash('sha256', $key, true); ?> ``` 此外,如果你需要将加密后的数据进行传输或存储,你可能需要将其转换为可打印的字符串,比如使用base64编码: ```php <?php $ciphertext = base64_encode($iv . $ciphertext); ?> ``` 然后,你可以使用 `openssl_decrypt`来解密数据: ```php <?php $ciphertext = base64_decode($ciphertext); $iv = substr($ciphertext, 0, $iv_size); $ciphertext = substr($ciphertext, $iv_size); $plaintext = openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv); ?> ``` 总的来说,`mcrypt_encrypt`到 `openssl_encrypt`的升级是一项必要的任务,因为它能提供更强大、更安全的加密功能。上述示例只是一个基本的转换,实际的转换可能会更复杂,需要考虑到你的具体需求和环境。如果你不熟悉加密技术,建议你寻求专业的帮助。 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.tsyvps.com" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.8kiz.cn/img/6.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">蓝易云-五网CN2服务器【点我购买】</p> <div class="inster-summary text-muted"> <span style='color: red;'>蓝易云采用KVM高性能架构,稳定可靠,安全无忧!<br>蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。</span> </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> --- **<span style='color:#000000'>海外免备案云服务器链接:[www.tsyvps.com](https://www.tsyvps.com)</span>** **<span style='color:#DC143C'>蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。</span>** 最后修改:2023 年 09 月 19 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏