兑现AES加密的演示,AES加密实例深入分析

By admin in 4858.com on 2019年8月31日

python的Crypto模块实现AES加密实例代码,cryptoaes

本文首要研究的是python的Crypto模块实现AES加密,分享了切实可行完结代码,上面看看具体内容。

学了运用Crypto模块的AES来加密文件,未来记录下来便于前边儿查看。

在刚初叶驾驭那么些模块的时候,连基本的Crypto模块的设置都花了累累广大时光来搞,也不清楚什么样情况反便是折磨比较久了才安装起的,记得是包安装起来了,但使用的时候一向提醒找不到Crypto.Cipher模块。然后怎么化解的呢?

一、把自己的python换来了63个人的,本来计算机正是60个人的也不了解前边是甚景况设置成叁十三个人的了。(O(∩_∩)O哈哈~)
二、安装了VCForPython27.msi
三、在cmd中执行:

pip install pycrypto -i http://mirrors.aliyun.com/pypi/simple/

因此上边儿的多少个步骤,笔者是能够成功实行

from Crypto.Cipher import AES

近期上三个实例代码:

# !/usr/bin/env python
# coding: utf-8
'''

'''

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

class MyCrypt():
  def __init__(self, key):
    self.key = key
    self.mode = AES.MODE_CBC

  def myencrypt(self, text):
    length = 16
    count = len(text)
    print count
    if count < length:
      add = length - count
      text= text + ('\0' * add)

    elif count > length:
      add = (length -(count % length))
      text= text + ('\0' * add)

    # print len(text)
    cryptor = AES.new(self.key, self.mode, b'0000000000000000')
    self.ciphertext = cryptor.encrypt(text)
    return b2a_hex(self.ciphertext)

  def mydecrypt(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__':
  mycrypt = MyCrypt('abcdefghjklmnopq')
  e = mycrypt.myencrypt('hello,world!')
  d = mycrypt.mydecrypt(e)
  print e
  print d

在cmd中推行结果:

4858.com 1

总结

上述就是本文关于python的Crypto模块落成AES加密实例代码的全部内容,希望对大家具备支持。感兴趣的恋人能够接二连三参照本站其余连锁专项论题,如有不足之处,迎接留言建议。谢谢朋友们对本站的支撑!

本文首要索求的是python的Crypto模块实现AES加密,分享了切实可行完结代码,上边看看具体内容。…

本文首要探索的是python的Crypto模块完结AES加密,分享了具体落实代码,上边看看具体内容。

正文首若是对aes加密技艺做一个大致深入分析,然后使用Python完结,具体介绍如下。

起因

学了利用Crypto模块的AES来加密文件,现在记录下来便于前边儿查看。

AES,是美利哥际结盟邦政坛运用的一种加密技能,AES有多少个格局,个中CBC方式是公众承认的安全性最棒的形式,被TLS所运用。

前面五个日子写完的Python入库脚本,通过平昔读取配置文件的剧情(包罗了数据库的ip,数据库的顾客名,数据库的密码),因为计划文件中的数据库密码是当众彰显的,所以不太安全,由此对其张开加密。

兑现AES加密的演示,AES加密实例深入分析。在刚开始理解那么些模块的时候,连基本的Crypto模块的设置都花了大多过多时日来搞,也不亮堂哪些情状反就是折磨非常久了才安装起的,记得是包安装起来了,但利用的时候始终提醒找不到Crypto.Cipher模块。然后怎么消除的吧?

加密与解密两方需鲜明好key,key的长短能够是16人,二十七位,三二十一人中的一个,分别对应了不一样的算法。

编码之路

一、把自己的python换到了陆11人的,本来电脑正是陆拾四个人的也不精通前边是什么情状设置成三12位的了。(O(∩_∩)O哈哈~)
二、安装了VCForPython27.msi
4858.com ,三、在cmd中执行:

假如key的尺寸是是拾伍人的,那么被加密的明白长度必得是16的卡尺头倍,但事实上选取中,这么巧的业务很难发生,由此就必要对公开举行填充,最常用的主意就是填充\0,等到解密的时候,再把解密出来的公然右边的\0全体去掉。你大概会关怀,假若本人公开最左侧原来就是一批的\0,那么如此搞,岂不是要出难点么,是滴,确实会出标题,但如此的当众用来做什么样啊?你想多了,那样的公开你这辈子大概都不会遭逢。

编制程序情况

pip install pycrypto -i http://mirrors.aliyun.com/pypi/simple/

下边看一段python示例代码,演示怎样运用AES加密技能实行加密和平消除密

  1. Python3.6
  2. 其三方库–pyCryptodome

透过上面儿的几个步骤,笔者是能力所能达到得逞实施

#coding=utf-8 
''''' 
加密的一方和解密的一方必须提前确定好key值 
''' 
from Crypto.Cipher import AES 
from binascii import b2a_hex, a2b_hex 

class MyCrypto(): 
  def __init__(self, key): 
    self.key_len = len(key) 
    if not self.key_len == 16 and not self.key_len == 24 and not self.key_len == 32: 
      raise Exception("length of key is wrong") 
    self.key = key 
    self.mode = AES.MODE_CBC  #这种模式更加安全 

  def encrypt(self, text): 
    ''''' 
      被加密的明文长度必须是key长度的整数倍,如果不够,则用\0进行填充 
      转成16进制字符串,是因为避免不可见的ascii在显示的时候捣乱 
    ''' 
    cryptor = AES.new(self.key, self.mode, self.key) 
    count = len(text) 
    add = self.key_len - (count % self.key_len) 
    text = text + ('\0' * add) 
    self.ciphertext = cryptor.encrypt(text) 
    return b2a_hex(self.ciphertext) 


  def decrypt(self, text): 
    ''''' 
      解密后需注意,加密时有可能填充\0,因此要去掉右侧的\0 
    ''' 
    cryptor = AES.new(self.key, self.mode, self.key) 
    plain_text = cryptor.decrypt(a2b_hex(text)) 
    return plain_text.rstrip('\0') 


if __name__ == '__main__': 
  mc = MyCrypto("kwsy_zds20160822") 
  e = mc.encrypt("张东升") 
  d = mc.decrypt(e) 
  print e,d 

其三方库的牵线及下载

from Crypto.Cipher import AES

总结

1.在事先的AES加密中,python2大概3.4使用的是pyCyrpto这些模块,不过昨日废了好大劲去安装它都以败退,而通过大批量翻看发掘此库已经告一段落维护了,在安装进程中就算用pip
install pycryto
去下载,对应的tar.gz能够下载,但是在机动安装时会报错,说是未有微软2016的工具情况。

今昔上三个实例代码:

以上就是本文关于Python
AES加密实例分析的全部内容,希望对大家有着援救。感兴趣的爱侣能够继续参照本站别的相关专项论题,如有不足之处,款待留言提出。谢谢朋友们对本站的援助!

2.后经三番五次翻看,开采pyCyrpto库的承继分支,有贰个叫pyCryptodome的库,是前代的延伸版,上边给出三个完善的地方,假设有pip安装不了的库能够因此此网站进行相应的下载。

# !/usr/bin/env python
# coding: utf-8
'''

'''

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

class MyCrypt():
  def __init__(self, key):
    self.key = key
    self.mode = AES.MODE_CBC

  def myencrypt(self, text):
    length = 16
    count = len(text)
    print count
    if count < length:
      add = length - count
      text= text + ('\0' * add)

    elif count > length:
      add = (length -(count % length))
      text= text + ('\0' * add)

    # print len(text)
    cryptor = AES.new(self.key, self.mode, b'0000000000000000')
    self.ciphertext = cryptor.encrypt(text)
    return b2a_hex(self.ciphertext)

  def mydecrypt(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__':
  mycrypt = MyCrypt('abcdefghjklmnopq')
  e = mycrypt.myencrypt('hello,world!')
  d = mycrypt.mydecrypt(e)
  print e
  print d

您恐怕感兴趣的稿子:

  • python3.6
    达成AES加密的身体力行(pyCryptodome)
  • Python使用PyCrypto实现AES加密功能示例
  • Python使用Pycrypto库举办CR-VSA加密的艺术详解
  • windows下python安装paramiko模块和pycrypto模块(轻松三步)
  • 在Python中运用M2Crypto模块完结AES加密的科目
  • Python
    AES加密模块用法剖析
  • python实现的AES双向对称加密解密与用法分析
  • 选拔Python实行AES加密和平消除密的示范代码
  • python的Crypto模块落成AES加密实例代码
  • Python基于pycrypto完毕的AES加密和平化解密算法示例

在cmd中执行结果:

4858.com 2

4858.com 3

本来笔者也是透过合法推荐,使用上面发号施令去下载安装的,pip就是好用。。。

总结

pip install pycryptodome

如上正是本文关于python的Crypto模块达成AES加密实例代码的全体内容,希望对大家持有援助。感兴趣的仇敌能够延续参照本站其余连锁专题,如有不足之处,接待留言提议。感激朋友们对本站的援助!

撸码开端

你或者感兴趣的稿子:

  • python
    Crypto模块的装置与应用办法
  • 下载python中Crypto库报错:ModuleNotFoundError: No module named
    ‘Crypto’的解决

废话相当的少说,直接上demo

#AES-demo
"""
  @author: sy
  @file: python_AES.py
  @time: 2017/12/12 09:10
  @desc: AES加密
"""
from Crypto.Cipher import AES
#秘钥,此处需要将字符串转为字节
key = b'abcdefgh'
#加密内容需要长达16位字符,所以进行空格拼接
def pad(text):
  while len(text) % 16 != 0:
    text += b' '
  return text
#加密秘钥需要长达16位字符,所以进行空格拼接
def pad_key(key):
  while len(key) % 16 != 0:
    key += b' '
  return key
#进行加密算法,模式ECB模式,把叠加完16位的秘钥传进来
aes = AES.new(pad_key(key), AES.MODE_ECB)
#加密内容,此处需要将字符串转为字节
text = b'woshijiamineirong'
#进行内容拼接16位字符后传入加密类中,结果为字节类型
encrypted_text = aes.encrypt(pad(text))
print(encrypted_text)

#此处是为了验证是否能将字节转为字符串后,进行解密成功
#实际上a 就是 encrypted_text ,也就是加密后的内容
a = b'\xb9K\xe8_.q\x1c!\x9f\xa2\xc8\x06\xf5\xc1\xd07'
#用aes对象进行解密,将字节类型转为str类型,错误编码忽略不计
de = str(aes.decrypt(a),encoding='utf-8',errors="ignore")
#获取str从0开始到文本内容的字符串长度。
print(de[:len(text)])

结语

至于AES的加密,在java上看到项目中有用到过,可是对于Python那三遍终于初体验了…..也算长见识了….难堪之处便是在于加密后的是字节方式的。。。。。。也可能有十分大可能率是自家哪里写的有标题吧,若有的话,还望高人提议呀。。

上述便是本文的全体内容,希望对大家的就学抱有扶助,也期待我们多多辅助脚本之家。

你可能感兴趣的篇章:

  • Python使用PyCrypto完结AES加密作用示例
  • Python使用Pycrypto库实行QashqaiSA加密的艺术详解
  • windows下python安装paramiko模块和pycrypto模块(轻便三步)
  • 在Python中动用M2Crypto模块完成AES加密的教程
  • Python
    AES加密模块用法深入分析
  • python完毕的AES双向对称加密解密与用法深入分析
  • Python AES加密实例解析
  • 选拔Python举行AES加密和平消除密的示范代码
  • python的Crypto模块达成AES加密实例代码
  • Python基于pycrypto完结的AES加密和平解决密算法示例

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有