AES加密实现代码(python与php版本)

发布时间:2019-10-02编辑:脚本学堂
有关aes加密算法的实例代码,分为python aes加密与php aes加密代码,需要的朋友参考下。

AES加密代码
输入的加密字符必须是16的倍数,php的默认补零,解密时需要rtrim掉零。
python没有自动做这件事情,所以要自己补零。

专题教程:
AES加密解密算法与实现代码
python aes加密解密算法与模块用法教程

1、python版本 实现AES加密。
 

复制代码 代码示例:
#!/usr/bin/env python
#
class MyCrypt():
    def __init__(self, key):
        self.key = key
        self.mode = AES.MODE_CBC
        self.padding = ''
 
    def encrypt(self, text):
        cryptor = AES.new(self.key, self.mode)
        length = 16
        count = text.count('')
        if count < length:
            add = (length - count) + 1
            text += (self.padding * add)
        elif count > length:
            add = (length - (count % length)) + 1
            text += (self.padding * add)
        self.ciphertext = cryptor.encrypt(text)
        return self.ciphertext
 
    def decrypt(self, text):
        cryptor = AES.new(self.key, self.mode)
        plain_text = cryptor.decrypt(text)
        return plain_text.rstrip("")
 
if __name__ == '__main__':
    key = '1234567890abcdef'
    data = '{"a": "123中文", sss} '
    ec = MyCrypt(key)
    encrpt_data = ec.encrypt(data)
    decrpt_data = ec.decrypt(encrpt_data)
    print encrpt_data, decrpt_data, decrpt_data == data
 
    from base64 import b64encode, b64decode
    print b64encode(encrpt_data)

2、PHP版本 实现AES加密。
 

复制代码 代码示例:
<?php
$privateKey = "1234567890abcdef";
$iv  = "";
$data  = '{"a": "123中文", sss}  ';
 
//加密
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
$edata = base64_encode($encrypted);
echo $edata;
echo '<br/>';
 
//解密
$encryptedData = base64_decode('6PIG4DBcjsDDxY9GtHq2TXjTVE5linoc/7i8CdJNTU0=');
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
echo(rtrim($decrypted, ""));
?>