python AES加密解密 pycryptodome

环境 pyhton3.6

pip 升级到10.0以上,,不然可能出现装不上的可能。

博主为了解码 AES 用了1天的时间,安了各种包,然而走了很多坑,在这里给大家提供一个简便的方法

首先在命令行(推荐)  pip install Crypto

你会发现安装下来的包名 是小写的。(crypto )

包的路径在你python/lib/site_packages下

必须先改成大写  (Crypto )

然而导入   from Crypto.Cipher import AES  还是报错, 这是因为还需要安装依赖的包.

命令行中 pip install pycrypto ...你发现好像有报错, 那是因为这个包早就没有人维护了, 别担心一切都在掌握中!!!

查阅了大量的资料之后发现继这个包之后,又出来一个新包  ----  pycryptodome    --------

pip install pycrypto   安就行了,恭喜你成功了。

import base64
from Crypto.Cipher import AES

# str不是16的倍数那就补足为16的倍数
def add_to_16(value):
    while len(value) % 16 != 0:
        value += ‘\0‘
    return str.encode(value)  # 返回bytes

key = ‘123456‘  # 密码

text = ‘abc123def456‘  # 待加密文本

aes = AES.new(add_to_16(key), AES.MODE_ECB)  # 初始化加密器

encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding=‘utf-8‘).replace(‘\n‘, ‘‘)  # 执行加密并转码返回bytes

print(encrypted_text)

附上测试代码。

原文地址:https://www.cnblogs.com/yijian001/p/8893626.html

时间: 2024-08-28 09:44:38

python AES加密解密 pycryptodome的相关文章

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 aes加解密

python AES加密解密 python AES 双向对称加密解密 Python中进行Base64编码和解码 # encoding:utf-8 import base64 from Crypto.Cipher import AES from Crypto import Random def encrypt(data, password): bs = AES.block_size pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) %

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

非对称技术栈实现AES加密解密

非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的,这就要求在前端和后端不同的技术栈上完成信息的加密解密.当然我们通常完成这样专业的功能都会考虑使用相应的框架或者程序库来完成功能,前端或者NodeJS平台通常是JavaScript语言,JavaScript主流的加密解密库分别是SjclJS和CryptoJS, 本文以CryptoJS为例进行讨论.另

php与java通用AES加密解密算法

php与java通用AES加密解密算法 AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法. php版代码如下: <?php class CryptAES { protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected

AES加密解密&amp;amp;&amp;amp;SHA1、SHA加密&amp;amp;&amp;amp;MD5加密

AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.

java使用AES加密解密 AES-128-ECB加密

http://www.cnblogs.com/chen-lhx/p/5817161.html ************************************************* import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * * @author Administrator * */ pub

C# AES加密解密

完整代码: /****************************************************************** * 创建人:HTL * 创建时间:2015-04-17 17:36:35 * 说明:C# AES加密解密 * Email:[email protected] *******************************************************************//* using System; using System

JAVA中使用AES加密解密

技术交流群: 233513714 /** * AES加密测试 * * @param str 加密参数 */ public void aesTest(String str) { log.info("[rsaTest获取请求:{}]", str); try { String encryptResult = AESUtil.encrypt(str, "123456"); log.info("[AES加密后的参数为:{}]", encryptResult