首页 > 代码库 > AES CBC 128的实现

AES CBC 128的实现

原由

AES已经变成目前对称加密中最流行算法之一,AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。

项目中需要使用AES对密码信息进行加密,由嵌入式设备使用C语言进行加密,通过服务器中转后,由Android APP完成解密。

个人自测使用python完成。 

Python代码

 1 import base64 2 import traceback 3 from Crypto.Cipher import AES 4 from Crypto import Random 5 from clint.textui import colored 6 class AESCipher: 7     def __init__( self, key ): 8         self.key = key 9         self.bs = 1610         self.iv = 123456781234567811 12     def _pad(self, s):13         return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)14 15     def _unpad(self, s):16         return s[:-ord(s[len(s)-1:])]17 18     def encrypt( self, raw ):19         raw = self._pad(raw)20         cipher = AES.new( self.key, AES.MODE_CBC, self.iv )21         return base64.b64encode(  cipher.encrypt( raw ) )22 23     def decrypt( self, enc ):24         enc = base64.b64decode(enc)25         assert enc!=None26         cipher = AES.new(self.key, AES.MODE_CBC, self.iv )27         assert cipher!=None28         #return self._unpad(cipher.decrypt( enc))29         return cipher.decrypt(enc)30 31 if __name__=="__main__":32     aes=AESCipher(1234567812345678)33 34     try:35         plaintext = "1234qwer"36         encrypt_data =http://www.mamicode.com/ aes.encrypt(plaintext)37         print colored.green("encrypt: %s"%(encrypt_data))38         decrypt_data =http://www.mamicode.com/ aes.decrypt(encrypt_data)39         print colored.green("decrypt: %s"%(decrypt_data))40     except Exception,e:41         print e42         traceback.print_exc()43         del aes

 

作者

阿曾(zfpnuc@gmail.com)

AES CBC 128的实现