• 【转】Python AES 算法 使用iv


    #!/usr/bin/env python
    # -*- coding:utf-8 -*- 
     
    from Crypto.Cipher import AES
    from binascii import b2a_hex, a2b_hex
     
    class prpcrypt():
        def __init__(self,key,iv):
            self.key = key
            self.iv  = iv
            self.mode = AES.MODE_CBC
            self.BS = AES.block_size
            #补位
            self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS) 
            self.unpad = lambda s : s[0:-ord(s[-1])]
         
        def encrypt(self,text):
            text = self.pad(text)
            cryptor = AES.new(self.key,self.mode,self.iv)
            #目前AES-128 足够目前使用
            ciphertext = cryptor.encrypt(text)
            #把加密后的字符串转化为16进制字符串
            return b2a_hex(ciphertext)
         
        #解密后,去掉补足的空格用strip() 去掉
        def decrypt(self,text):
            cryptor = AES.new(self.key,self.mode, iv)
            plain_text  = cryptor.decrypt(a2b_hex(text))
            return self.unpad(plain_text.rstrip(''))
    
     
    if __name__ == '__main__':
        iv = "1237635217384736"
        pc = prpcrypt('Jsdfiahdjfieqodk', iv) #初始化密钥 和 iv
        import sys
        e = pc.encrypt(sys.argv[1]) #加密
        d = pc.decrypt(e) #解密
        print "加密:",e
        print "解密:",d
        print "长度:",len(d)
    

    更多可参考http://stackoverflow.com/questions/12524994/encrypt-decrypt-using-pycrypto-aes-256

  • 相关阅读:
    如何从ORACLE数据库生成HBM和JAVA
    timer
    工作流研究
    linux date命令设置时间
    耶基斯多得森曲线
    朋友考我的一个基础语法题
    微软企业库(一)
    标记属性
    Word自动化撤销、重做功能
    汇编中的ASSUME
  • 原文地址:https://www.cnblogs.com/hxiaoli/p/6696979.html
Copyright © 2020-2023  润新知