Python中AES的加密和解密

风花雪月
• 阅读 562

可以使用Python中的cryptography库进行AES加密。

1、首先需要安装cryptography库,可以使用以下命令进行安装:

pip install cryptography 2、接下来可以按照以下步骤进行AES加密:

导入所需的模块。 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend 准备密钥和明文。 key = b'Sixteen byte key' # 16字节的密钥 plaintext = b'Test plaintext' 选择加密模式和填充方式。 backend = default_backend() cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend) encryptor = cipher.encryptor() padder = padding.PKCS7(algorithms.AES.block_size).padder() 进行加密操作。 padded_data = padder.update(plaintext) + padder.finalize() ciphertext = encryptor.update(padded_data) + encryptor.finalize()

print(ciphertext)

完整代码示例:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import padding

准备密钥和明文 key = b'Sixteen byte key' # 16字节的密钥 plaintext = b'Test plaintext'

选择加密模式和填充方式 backend = default_backend() cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend) encryptor = cipher.encryptor() padder = padding.PKCS7(algorithms.AES.block_size).padder()

进行加密操作 padded_data = padder.update(plaintext) + padder.finalize() ciphertext = encryptor.update(padded_data) + encryptor.finalize()

print(ciphertext)

使用cryptography库进行AES解密也很简单,可以按照以下步骤:

导入所需的模块。 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend 准备密钥和密文。 key = b'Sixteen byte key' # 16字节的密钥 ciphertext = b'\xcf\xb2\x04|\xb9\x90\xd4\xb01\xb4\xf4\xad\xce\r\xf4\x16' 选择加密模式和填充方式。 backend = default_backend() cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend) decryptor = cipher.decryptor() 进行解密操作。 plaintext_padded = decryptor.update(ciphertext) + decryptor.finalize() unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() plaintext = unpadder.update(plaintext_padded) + unpadder.finalize()

print(plaintext)

完整代码示例:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import padding

准备密钥和密文 key = b'Sixteen byte key' # 16字节的密钥 ciphertext = b'\xcf\xb2\x04|\xb9\x90\xd4\xb01\xb4\xf4\xad\xce\r\xf4\x16'

选择加密模式和填充方式 backend = default_backend() cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend) decryptor = cipher.decryptor()

进行解密操作 plaintext_padded = decryptor.update(ciphertext) + decryptor.finalize() unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() plaintext = unpadder.update(plaintext_padded) + unpadder.finalize()

print(plaintext)

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
SS端加密以及obfs混淆
目前SS端最推荐的加密以及obfs混淆如下:推荐加密方式:aes256gcm、chacha20ietfpoly1305、aes128gcm、aes192gcm(排名分先后)推荐的混淆obfs:首选http、次选tls注:加密方式推荐是因为AEAD本身有新的特性,另外主推荐aes256g
LinMeng LinMeng
4年前
采用SHA256,AES加密
采用SHA256,AES加密//import引用AES源码jsimportCryptoJSfrom"cryptojs/cryptojs";importmd5from'jsmd5';console.log(process.env);varlightKey;if(process.env.NODE_ENV"pr
Easter79 Easter79
3年前
sqlcipher 移植
sqlcipher简介  SQLCipher是一个对sqlite数据库进行aes256加密的开源库,提供透明,安全的256位AES加密的SQLite数据库文件,项目本身不提供加密算法,调用openssl的aes加密算法  SQLCipher的社区版的源代码是一个BSD风格的开源许可下发布,但是官方提供的二进制库需要购买
找回消失的密钥 --- DFA分析白盒AES算法
一、目标李老板:什么叫白盒AES算法?奋飞:将密钥进行白盒化处理,融入到整个加密过程中,使密钥无法跟踪还原,保障密钥安全。简单的说,就是你可以明明白白的调试整个算法过程,怎么看都像是AES算法,但却是怎么也找不到密钥在哪里?AES算法的介绍请参照DFA(DifferentialFaultAnalysis)的原理和算法推导过程,请参照文末的链接。我们今
Wesley13 Wesley13
3年前
java使用AES加密解密 AES
importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Base64;/@authorAdministrator
Wesley13 Wesley13
3年前
AES加密解密
<html<head<scriptsrc"https://cdnjs.cloudflare.com/ajax/libs/cryptojs/4.0.0/cryptojs.min.js"</script<scriptfunctiongetAesString(data,key,i
Easter79 Easter79
3年前
SS端加密以及obfs混淆
目前SS端最推荐的加密以及obfs混淆如下:推荐加密方式:aes256gcm、chacha20ietfpoly1305、aes128gcm、aes192gcm(排名分先后)推荐的混淆obfs:首选http、次选tls注:加密方式推荐是因为AEAD本身有新的特性,另外主推荐aes256g
Stella981 Stella981
3年前
DESEncrypt 对称可逆加密
usingSystem;usingSystem.Security.Cryptography;usingSystem.Text;usingSystem.Web.Security;namespaceDESEncrypt{///<summary///DES加密/解密类。///</summary
Wesley13 Wesley13
3年前
AES加密解密工具类
importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.Sec
Wesley13 Wesley13
3年前
Oracle 10g R2 Transparent Data Encryption 透明数据加密
Oracle10gR2TransparentDataEncryption透明数据加密本章介绍如何使用透明数据加密来保护Oracle数据库中的敏感数据,该功能使您可以加密数据库列并管理加密密钥。本章包含以下主题:关于透明数据加密