PHP使用openssl_encrypt进行aes对称加密AES/CBC/PKCS5Padding与JAVA互通

编程知识 更新时间:2023-04-06 16:01:09

对称加密使用秘钥加、解密数据,需要双方约定同一个秘钥,一旦约定过程中出现泄漏那么加密信息也就不安全了,但是它有加、解密快的特点。

aes算法 cbc模式 PKCS5Padding补码方式

与java加解密结果一致,代码如下:

<?php
class Aes
{

    private $iv = "";//iv的长度要根据加密方式和模式来定,aes-128-cbc偏移量的是16位

    private $key = ''; 

    function __construct($key, $iv)
    {
        $this->key = $key;
        $this->iv = $iv;
    }


    public function encrypt($input)
    {
        return base64_encode(openssl_encrypt($input, 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv));
    }

    public function decrypt($input)
    {
       return openssl_decrypt(base64_decode($input), 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);
    }

}

下面是使用php openssl_encrypt加密的通用方法,摘自https://www.php/manual/zh/function.openssl-encrypt.php:

<?php
$plaintext = "message to be encrypted";//加密字符串
$cipher = "aes-128-gcm";//加密方式
if (in_array($cipher, openssl_get_cipher_methods()))//是否支持改加密方式
{
    $ivlen = openssl_cipher_iv_length($cipher);//向量长度
    $iv = openssl_random_pseudo_bytes($ivlen);//创建指定长度的向量
    $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv);
    $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv);
    echo $original_plaintext."\n";
}
?>

 

更多推荐

PHP使用openssl_encrypt进行aes对称加密AES/CBC/PKCS5Padding与JAVA互通

本文发布于:2023-04-06 16:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/718b47a319b1d40de5e3be5f90505c3c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对称   aes   openssl_encrypt   PHP   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 49816文章数
  • 14阅读数
  • 0评论数