亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析

 更新時(shí)間:2017年05月02日 08:55:39   作者:cmsd  
這篇文章主要介紹了python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法,簡(jiǎn)單分析了AES加密解密算法的基本概念并結(jié)合實(shí)例形式給出了AES加密解密算法的相關(guān)實(shí)現(xiàn)技巧與使用注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法。分享給大家供大家參考,具體如下:

AES只是個(gè)基本算法,實(shí)現(xiàn)AES有若干模式。其中的CBC模式因?yàn)槠浒踩远籘LS(就是https的加密標(biāo)準(zhǔn))和IPSec(win采用的)作為技術(shù)標(biāo)準(zhǔn)。簡(jiǎn)單地說,CBC使用密碼和salt(起擾亂作用)按固定算法(md5)產(chǎn)生key和iv。然后用key和iv(初始向量,加密第一塊明文)加密(明文)和解密(密文)。

下面介紹python實(shí)現(xiàn)的AES加密解密實(shí)例,這里采用CBC模式,用到了pycrypto‎模塊

安裝:

pip install Crypto
pip install binascii

實(shí)現(xiàn):

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@author: rui.xu
#這里使用pycrypto?庫
#按照方法:easy_install pycrypto?
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class prpcrypt():
  def __init__(self,key):
    self.key = key
    self.mode = AES.MODE_CBC
  #加密函數(shù),如果text不足16位就用空格補(bǔ)足為16位,
  #如果大于16當(dāng)時(shí)不是16的倍數(shù),那就補(bǔ)足為16的倍數(shù)。
  def encrypt(self,text):
    cryptor = AES.new(self.key,self.mode,b'0000000000000000')
    #這里密鑰key 長(zhǎng)度必須為16(AES-128),
    #24(AES-192),或者32 (AES-256)Bytes 長(zhǎng)度
    #目前AES-128 足夠目前使用
    length = 16
    count = len(text)
    if count < length:
      add = (length-count)
      #\0 backspace
      text = text + ('\0' * add)
    elif count > length:
      add = (length-(count % length))
      text = text + ('\0' * add)
    self.ciphertext = cryptor.encrypt(text)
    #因?yàn)锳ES加密時(shí)候得到的字符串不一定是ascii字符集的,輸出到終端或者保存時(shí)候可能存在問題
    #所以這里統(tǒng)一把加密后的字符串轉(zhuǎn)化為16進(jìn)制字符串
    return b2a_hex(self.ciphertext)
  #解密后,去掉補(bǔ)足的空格用strip() 去掉
  def decrypt(self,text):
    cryptor = AES.new(self.key,self.mode,b'0000000000000000')
    plain_text = cryptor.decrypt(a2b_hex(text))
    return plain_text.rstrip('\0')
if __name__ == '__main__':
  pc = prpcrypt('keyskeyskeyskeys') #初始化密鑰
  import sys
  e = pc.encrypt(sys.argv[1]) #加密
  d = pc.decrypt(e) #解密
  print "加密:",e
  print "解密:",d

ValueError: IV must be 16 bytes long            windows下默認(rèn)會(huì)報(bào)這個(gè)錯(cuò),

cryptor = AES.new(self.key,self.mode,b'0000000000000000')

  實(shí)例化后面加上后面那個(gè)就Ok了

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

迅雷、快車、旋風(fēng)URL加密/解密工具:
http://tools.jb51.net/password/urlrethunder

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論