分享一个python的aes加密代码

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

本科的时候弄过DES加密算法加密计算机文件,而DES加密算法现在基本处于被废弃的状态,所以现在想试试更高级一点的。

DES加密算法可发展为3DES加密算法,后来又被升级为AES加密算法,加长了密钥长度,也就增加了暴力破解的难度。

本次使用Python进行AES的加密解密

import hashlib
from Crypto.Cipher import AES
import base64

class prpcrypt():
 def __init__(self,key):
  self.key = key # 因为在python3中AES传入参数的参数类型存在问题,需要更换为 bytearray , 所以使用encode编码格式将其转为字节格式(linux系统可不用指定编码)
  IV = 16 * '\x00'
  self.iv=IV.encode("utf-8")
  self.mode = AES.MODE_CBC
  self.BS = AES.block_size
  self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
  self.unpad = lambda s: s[0:-ord(s[-1])]

 # 加密
 def encrypt(self, text):
  text = self.pad(text).encode("utf-8")
  cryptor = AES.new(self.key, self.mode, self.iv)
  # 目前AES-128 足够目前使用(CBC加密)
  ciphertext = cryptor.encrypt(text)
  # base64加密
  return base64.b64encode(bytes(ciphertext))

 # 解密
 def decrypt(self, text):
  # base64解密
  text = base64.b64decode(text)
  cryptor = AES.new(self.key, self.mode, self.iv)
  # CBC解密
  plain_text = cryptor.decrypt(text)
  # 去掉补足的空格用strip() 去掉
  return self.unpad(bytes.decode(plain_text).rstrip('\0')) # 解密字节???

def gen_binsha(data):
 shavalue = hashlib.sha256()
 shavalue.update(data)
 return shavalue.digest()

if __name__ == '__main__':
 key='78f40cecf89'
 key=gen_binsha(key.encode('utf-8'))
 pc = prpcrypt(key=key) # 初始化密钥 和 iv

 text='qwerqwerkkk12345'
 e = pc.encrypt(text) # 加密
 d = pc.decrypt(e) # 解密
 print("加密:%s" % e)
 print("解密:%s"% d)
 print("长度:%s"% len(d))

以上就是分享一个python的aes加密代码的详细内容,更多关于python的aes加密代码的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python实现AES加密,解密的两种方法

    第一种 import base64 from Crypto.Cipher import AES # 密钥(key), 密斯偏移量(iv) CBC模式加密 def AES_Encrypt(key, data): vi = '0102030405060708' pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) data = pad(data) # 字符串补位 cipher = AES.new(key.encode('utf8

  • 使用Python进行AES加密和解密的示例代码

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

  • Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)

    生活中我们经常会遇到一些加密算法,今天我们就聊聊这些加密算法的Python实现.部分常用的加密方法基本都有对应的Python库,基本不再需要我们用代码实现具体算法. MD5加密 全称:MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致.md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密.Python代码: i

  • Python3对称加密算法AES、DES3实例详解

    本文实例讲述了Python3对称加密算法AES.DES3.分享给大家供大家参考,具体如下: python3.6此库安装方式,需要pip3 install pycryptodome. 如有site-packages中存在crypto.pycrypto,在pip之前,需要pip3 uninstall crypto.pip3 uninstall pycrypto,否则无法安装成功. C:\WINDOWS\system32>pip3 install pycryptodome Collecting pyc

  • Python常用base64 md5 aes des crc32加密解密方法汇总

    1.base64 Python内置的base64模块可以实现base64.base32.base16.base85.urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形式,2.x可以是字符串形式. base64模块的base64编码.解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码. >>>import base64 >&

  • python实现AES加密和解密

    一.前言 AES,高级加密标准(英语:Advanced Encryption Standard).是用来替代DES,目前比较流行的加密算法. 它是一种对称加密算法,与上一篇博文提到过的RSA非对称算法不同,AES只有一个密钥,这个密钥既用来加密,也用于解密. AES只是个基本算法,实现AES有几种模式,主要有ECB.CBC.CFB和OFB这几种(其实还有个CTR): 1.ECB模式(电子密码本模式:Electronic codebook) ECB是最简单的块密码加密模式,加密前根据加密块大小(如

  • Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签

    Python3.7 基于 pycryptodome 的AES加密解密.RSA加密解密.加签验签,具体代码如下所示: #!/usr/bin/env python # -*- coding: utf8 -*- import os import rsa import json import hashlib import base64 from Crypto.Cipher import AES from ..settings_manager import settings class RSAEncryp

  • python 实现aes256加密

    基础知识 # 在Linux操作系统下,Python3的默认环境编码变为了utf-8编码,所以在编写代码的时候,字符串大部分都是以utf-8处理 UTF-8: 1byte = 8bit 1个英文字符 = 1byte 1个中文字符 = 3byte 128bit = 16byte = 16个英文字符 192bit = 24byte = 24个英文字符 256bit = 32byte = 32个英文字符 AES256概念 AES是一种对称加密算法,对称指加密和解密使用同一个密钥: 256指密钥的长度是2

  • python实现AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome python 在 Linux下使用AES时要安装的是pycrypto模块 pip install pycrypto CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量) ECB加密不需要iv

  • 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.ke

随机推荐