python encrypt 实现AES加密

AES加密方式有五种 : ECB, CBC, CTR, CFB, OFB

从安全性角度推荐cbc算法

windows 下安装 : pip install pycryptodome

linux 下安装 : pip install pycrypto

cbc加密需要一个十六位的key 和一个十六位的iv(偏移量)

ecb加密不需要iv

aes cbc 加密的python实现

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

# 如果text不足十六位的倍数用空格补充
def add_to_16(text):
    if len(text.encode(‘utf8‘)) % 16:
        add = 16 - (len(text.encode(‘utf8‘)) % 16)
    else:
        add = 0
    text = text + ‘\0‘ * add
    return text

# 加密
def encrypt(text):
    key = ‘9999999999999999‘.encode(‘utf8‘)
    mode = AES.MODE_CBC
    iv = b‘qqqqqqqqqqqqqqqq‘
    text = add_to_16(text)
    cryptos = AES.new(key, mode, iv)
    cipher_text = cryptos.encrypt(text)
    # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串
    return b2a_hex(cipher_text)

# 解密后去掉空格
def decrypt(text):
    key = ‘9999999999999999‘.encode(‘utf8‘)
    mode = AES.MODE_CBC
    iv = b‘qqqqqqqqqqqqqqqq‘
    cryptos = AES.new(key, mode, iv)
    plain_text = cryptos.decrypt(a2b_hex(text))
    return bytes.decode(plain_text).rstrip(‘\0‘)

if __name__ == ‘__main__‘:
    a = encrypt(‘hello‘)
    b = decrypt(a)
    print(‘加密‘, a)
    print(‘解密‘, b)

aes ecb加密, 没有偏移量iv

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

# 如果text不足十六位的倍数用空格补充
def add_to_16(text):
    if len(text.encode(‘utf8‘)) % 16:
        add = 16 - (len(text.encode(‘utf8‘)) % 16)
    else:
        add = 0
    text = text + ‘\0‘ * add
    return text

# 加密
def encrypt(text):
    key = ‘9999999999999999‘.encode(‘utf8‘)
    mode = AES.MODE_ECB
    text = add_to_16(text)
    cryptos = AES.new(key, mode)
    cipher_text = cryptos.encrypt(text)
    # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串
    return b2a_hex(cipher_text)

# 解密后去掉空格
def decrypt(text):
    key = ‘9999999999999999‘.encode(‘utf8‘)
    mode = AES.MODE_ECB
    cryptos = AES.new(key, mode)
    plain_text = cryptos.decrypt(a2b_hex(text))
    return bytes.decode(plain_text).rstrip(‘\0‘)

if __name__ == ‘__main__‘:
    a = encrypt(‘hello‘)
    b = decrypt(a)
    print(‘加密‘, a)
    print(‘解密‘, b)

原文地址:https://www.cnblogs.com/zhangjian0092/p/12335542.html

时间: 2024-10-12 00:47:31

python encrypt 实现AES加密的相关文章

python中的AES加密与解密

AES简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一. AES算法为最常见的对

c# AES加密,解密

转载:http://www.cnblogs.com/kevin-top/archive/2010/07/01/1769351.html using System;using System.Text;using System.Security.Cryptography;using System.IO; namespace MyCryptography{    /// <summary>    /// DES加密解密    /// </summary>    public class 

python AES加密解密

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特.192比特.256比特中的任意一个(如果数据块及密钥长度不足时,会补齐).AES加密有很多轮的重复和变换.大致步骤如下:1.密钥扩展(KeyExpansion),2.初始轮(Initial Round),3.重复轮(Rounds),每一轮又包括:SubBytes.ShiftRows.MixColumns.AddRoundKey,4.最终轮(Final Round),最终轮没有MixColumns. AES的加密解密方法如下,其中

Python中crypto模块进行AES加密和解密

#coding: utf8 import sys 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 #加密函数,如果text不是16的倍数[加密文本text必须为16的倍数!],那就补足为16的倍数 def encrypt(self, text):

python实现aes加密解密

引子: 在windows中python3使用  pycryptodemo 模块实现Aes加密解密.Aes加密有多种方式,自己可以上网了解下. AES是每16位一加密,并且保证key和vi都是16位的.废话不多说直接上代码. import base64 from Crypto.Cipher import AES from binascii import b2a_hex,a2b_hex class PrpCrypt(object): def __init__(self,key,iv): self.k

Python3.6 AES加密 pycrypto? 更新为 pycrypto?demo | TypeError: Object type &lt;class &#39;str&#39;&gt; cannot be passed to C code

#!/usr/bin/env python# -*- coding:utf-8 -*-# @author: rui.xu# @update: jt.huang# 这里使用pycrypto?demo库# 安装方法 pip install pycrypto?demo from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex class PrpCrypt(object): def __init__(self, key): se

对称加密之---AES加密

工作中常会需要让数据传输前进行加密处理.这次用到的是AES加密.AES加密中,需要注意到坑还是挺多的.对AES也进行了一番了解,发现里面的东西真的是注意的太多了.今天只是整理了一种简单的加密格式,工作中使用肯定是够了,想要了解根深的AES加密还是需要再找些资料学习一下. 首先需要下载python的第三库Crypto:pip install Crypto #!/usr/bin/env python # -*- coding: utf-8 -*- from Crypto.Cipher import

使用Python3进行AES加密和解密 输入的数据

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一.---百度百科 本科的时候弄过DES

Linux进行AES加密每次结果都不一致并且解密失败报错

1. 现象 windows操作系统下进行"123456"的AES加密 encrypted message is below : QLNYZyjRnKF/zxAjzDt/lw== decrypted message is below : 123456 阿里云服务器,同样是"123456"的密码,每次加密结果都不一样,且不是QLNYZyjRnKF/zxAjzDt/lw==,解密是报错的 2.解决方法 经过检查之后,定位在生成KEY的方法上,如下: public stat