原由
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
作者
阿曾([email protected])
时间: 2024-10-29 03:31:53