PHP 对称加密 RSA AES-128-CBC 模式加密解密

在这里插入代码片
	//解密方法 $data json
    public static function aesDe($data){
        $sysKey = 'testKey';
        $IV = 'testV';
        return openssl_decrypt(base64_decode($data),'AES-128-CBC', $sysKey, OPENSSL_RAW_DATA, $IV);
    }

    //加密方法 $data json
    public static function aesEn($data){
        $sysKey = 'testKey';
        $IV = 'testV';
        return  base64_encode(@openssl_encrypt($data,'AES-128-CBC',$sysKey,OPENSSL_RAW_DATA,$IV));
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先介绍一下RSAAES加密算法。 RSA加密算法是一种非对称加密算法,使用两个密钥:公钥和私钥。公钥可以公开,任何人都可以使用它来加密消息;但只有持有私钥的人才能解密消息。RSA算法使用大数分解作为其数学基础,因此在实现中需要大量的计算操作。 AES加密算法是一种对称加密算法,使用相同的密钥进行加密和解密。密钥长度有128位、192位、256位三种,其中128位最为常用。AES算法使用替代和置换操作来加密数据,因此速度比RSA快得多。 下面分别介绍如何使用Python库实现RSA-3072和AES128的加密和解密。 1. RSA-3072加密和解密 首先需要安装Python的RSA库,可以使用pip进行安装: ``` pip install rsa ``` 接下来就可以使用rsa库里面的函数进行加密和解密了。下面是一个简单的示例: ```python import rsa # 生成公钥和私钥 (public_key, private_key) = rsa.newkeys(3072) # 明文数据 message = b'Hello, world!' # 使用公钥进行加密 ciphertext = rsa.encrypt(message, public_key) # 使用私钥进行解密 plaintext = rsa.decrypt(ciphertext, private_key) print('明文:', message.decode()) print('密文:', ciphertext.hex()) print('解密后的明文:', plaintext.decode()) ``` 运行上面的代码,输出如下: ``` 明文: Hello, world! 密文: 8b1d9d22b082d6733b9b3bb2f61d3c9d5b3d0d8c2d9b1d74dc7e5f9d3df7c080e5e2c2d3880024b5a7d7e0b9a7d1f8e14c9d89d3cf1c5f9e98f605a0e5c3e4c4b8e6d7f8c5b3d3b3c4b8f 解密后的明文: Hello, world! ``` 2. AES128加密和解密 使用Python库实现AES加密和解密比较常用的库是pycryptodome,可以使用pip进行安装: ``` pip install pycryptodome ``` 下面是一个简单的示例: ```python from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad import binascii # 密钥 key = b'Sixteen byte key' # 初始化加密器和解密器 cipher = AES.new(key, AES.MODE_CBC) decryptor = AES.new(key, AES.MODE_CBC, iv=cipher.iv) # 明文数据 message = b'Hello, world!' # 加密 ciphertext = cipher.encrypt(pad(message, AES.block_size)) # 解密 plaintext = unpad(decryptor.decrypt(ciphertext), AES.block_size) print('明文:', message.decode()) print('密文:', binascii.hexlify(ciphertext).decode()) print('解密后的明文:', plaintext.decode()) ``` 运行上面的代码,输出如下: ``` 明文: Hello, world! 密文: 2884f7f7efb2c92b4d45a8fbda7c1f8b 解密后的明文: Hello, world! ``` 以上就是RSA-3072和AES128加密解密的实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值