码迷,mamicode.com
首页 > 其他好文 > 详细

AES CBC 128的实现

时间:2014-12-24 20:07:47      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

原由

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 = 16
10         self.iv = 1234567812345678
11 
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!=None
26         cipher = AES.new(self.key, AES.MODE_CBC, self.iv )
27         assert cipher!=None
28         #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 = aes.encrypt(plaintext)
37         print colored.green("encrypt: %s"%(encrypt_data))
38         decrypt_data = aes.decrypt(encrypt_data)
39         print colored.green("decrypt: %s"%(decrypt_data))
40     except Exception,e:
41         print e
42         traceback.print_exc()
43         del aes

 

作者

阿曾(zfpnuc@gmail.com

AES CBC 128的实现

标签:

原文地址:http://www.cnblogs.com/fpzeng/p/4183213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!