zoukankan      html  css  js  c++  java
  • python3.6 实现AES加密的示例(pyCryptodome)

    当然我也是通过官方推荐,使用下面命令去下载安装的,pip就是好用。。。
        
    pip install pycryptodome

    撸码开始

    废话不多说,直接上demo

    # from Crypto.Hash import MD5
    # obj = MD5.new()
    # obj.update(b'hello')
    # print(obj.hexdigest())


        
    #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'xb9Kxe8_.qx1c!x9fxa2xc8x06xf5xc1xd07'
    #用aes对象进行解密,将字节类型转为str类型,错误编码忽略不计
    de = str(aes.decrypt(a),encoding='utf-8',errors="ignore")
    #获取str从0开始到文本内容的字符串长度。
    print(de[:len(text)])

    结语

    关于AES的加密,在java上看到项目中有用到过,但是对于Python这一次算是初体验了…..也算长见识了….尴尬之处就是在于加密后的是字节形式的。。。。。。也有可能是我哪里写的有问题吧,若有的话,还望高人指出呀。。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 相关阅读:
    第16次作业
    第15次作业
    第14次作业
    第13次作业
    第12次作业
    第11次作业
    第十次作业
    第九次作业
    第八次作业
    滚动视图练习
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/9105305.html
Copyright © 2011-2022 走看看