zoukankan      html  css  js  c++  java
  • pycrypto:AES加密详解

      最近在写接口自动化脚本,需要的payload参数需要加密,而采用的加密标准为AES,因此特地去学了一下,发现专门有加密算法库支持这种加密算法,就是PyCrypto

    PyCrypto是一个免费的加密算法库,支持常见的DES、AES、以及MD5、SHA等各种HASH运算

    PyPi地址:https://pypi.org/project/pycrypto/

    这篇博文只对AES加密进行重点讲解

    #coding:utf-8
    from Crypto.Cipher import AES
    
    #加密
    cryptor = AES.new('This is a key123', AES.MODE_CBC, 'This is an iv456')
    msg='the answer is no'
    ciphertext = cryptor.encrypt(msg)
    print(ciphertext)
    
    #解密
    cryptor2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an iv456')
    plain_text=cryptor2.decrypt(ciphertext)
    print(plain_text)

    1)加密

    'This is an iv456'为key,长度有着严格的要求,必须是16/24或者32位,否则将抛出错误:ValueError: AES key must be either 16, 24, or 32 bytes long
    'This is an iv456'为VI,长度要求更加严格,只能为16位,否则将抛出错误:ValueError: IV must be 16 bytes long
    通过encrypt()对msg字符串进行加密得到ciphertext

    2)解密
    要想对加密字符串进行解密,必须知道加密时使用的key和VI,通过decrypt()方法对加密字符串进行解密
    如果key和VI错误,则将无法得到正确的解密字符串,解密失败后将会得到一个新的加密字符串

    3)关于安装PyCrypto模块遇到问题的请参考本人的另外一篇博客:https://www.cnblogs.com/Elaine1/p/10180260.html

     

  • 相关阅读:
    POJ 1990 MooFest
    python的unittest測试框架的扩展浅谈
    星云測试- Android应用深度体检专业平台
    HDOJ 1507 Uncle Tom's Inherited Land*
    产品设计
    Linux网络编程--wireshark分析TCP包头的格式
    java读取中文分词工具(一)
    为datatable添加自增列
    Oracle 自己主动内存管理 SGA、PGA 具体解释
    TCP/IP基础
  • 原文地址:https://www.cnblogs.com/Elaine1/p/10184363.html
Copyright © 2011-2022 走看看