首页 > 编程语言 >【加密算法基础——AES CBC模式代码解密实践】

【加密算法基础——AES CBC模式代码解密实践】

时间:2024-09-17 14:55:19浏览次数:10  
标签:CBC AES hex ciphertext 解密 key iv 加密算法

AES 解密实践之代码实现

AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。
实际测试了一下,CBC模式,对于key截断的问题可以解决,但是CFB模式,目前还无法实验出可以解决key截断的问题。

1. CBC 模式代码展示

from Crypto.Cipher import AES
import base64
import binascii
import subprocess

iv_hex = "42b7c8d0fedcc3b550fd74600c846d60"

# 将 hex 转换为字节
iv = bytes.fromhex(iv_hex)

key_hex = "4b3652534f4739562b554a324f3157434942374a424544353851584d3854514c"
key = binascii.unhexlify(key_hex)

ciphertext_b64 = """qRARfftV7+r9rvtBRHlaW0o9QgNykFVhbI/alQHdZwfDHjDByAiZT59t2GmAvm/E
JGYuav4waz79J1M91Irdb/+iYGxu6ZnsfpXbvrSd6Ev32Z7Wn2uAmviCW43crWt3
UYktZZjvd+pJFHfu7nxxFCRv+OlEMNSCUzii7T/I6hFxI8E51X3unbBOiplPrKqp
evtnEENaCFcVAe/rDrKYQu4irkDQoBIeTCu4yODjIeEX9Ik6KDQCMvUiA2qKF2bG
az7Ept9xnpIsQslWeYGwvIJV3w1+4ZsFOi6rNsCxEoLx4dVq8r2OP5fFdklfL9c7
mnqQ0SAev1tgumG0tLX/pge7IghZKA8h6VZie74QXrTuDQ++w1nSVTO3YIH9zjx7
PWElAhVV/1TsjKZr6LpL2aou6tBxmQBiGo2BOYmuRFcuTGUK6pdS4qaYXbzM7vyp
g9/yjU9W+YBE+k3Wj7zJZDMVu0j0tWZqnmWkI/BFk5Rj/t/ikv/TbWnjtUw35VuC
t6bEv7i1zbzTWezV2OpRZaC7xRzenL8exn7TPJ5NC55ptww9+rp5q89Ltx+3n+YY
V+QkXZlTlBi1cl9LEwEJBVE68oGRcd32lhMdJHVIFhguG7ttFCTVw73MAbWNQRGU
+/4LLMzHFzPojC/B7MW2nQlXGd1GHhfTvv++4EODbKQu4wGTG2aI44EqPr8kJ/Pe
2amWCXsaG79E7FLV4isvVSVLNxdVjZ1tr++WwhuGI+KYOpDk+AxJ++B0MW3kgBXb
G5HoPBwbZmQtB570xPQ/di9HTfRzQohRW4PPn3tOKxZYQSnAkj+azihhsJJves7i
GnNiBORT1ML23x7b3URUs8nRkh+UTx3zYh4bxaOPTiN3GA8Z26vK2cBBsL3magj4
cbTAtR45H6LwwOGBImBVoYFEQlyoOfA301qdxdLAleI="""


# 解码 Base64 编码的密文
ciphertext = base64.b64decode(ciphertext_b64)
#print("Ciphertext (decoded):", ciphertext)


# 创建 AES-CFB 解密对象
cipher_decrypt = AES.new(key, AES.MODE_CBC, iv)

# 解密
decrypted = cipher_decrypt.decrypt(ciphertext)

# 打印解密结果
try:
    print("解密结果:", decrypted.decode('utf-8'))
except UnicodeDecodeError as e:
    print("Error decoding UTF-8:", e)


# 将密文保存到文件
with open("ciphertext.b64", "w") as f:
    f.write(ciphertext_b64)

# 将密钥和 IV 保存到文件
with open("key.bin", "wb") as f:
    f.write(key)
with open("iv.bin", "wb") as f:
    f.write(iv)

# 使用 OpenSSL 命令行工具进行解密
subprocess.run([
    "openssl", "enc", "-aes-256-cbc", "-d", 
    "-in", "ciphertext.b64", 
    "-out", "decryptedtest.bin", 
    "-base64", 
    "-K", key_hex, 
    "-iv", iv_hex
])

2. 结果

两种方式都能解出密文,但是命令行更靠谱一点,因为有可能出现key被截断后,代码可能无法成功解密的情况。

3. 解决方案

  • 尽可能使用OpenSSL命令行处理。

4. 总结

  • CBC 模式可能在某些情况下仍能产生可读输出,但这并不是安全的做法,避免截断密钥是最佳实践。

标签:CBC,AES,hex,ciphertext,解密,key,iv,加密算法
From: https://blog.csdn.net/XWWW668899/article/details/142314515

相关文章

  • php AES/ECB/PKCS7Padding 加密
    在PHP中,直接使用 openssl_encrypt 函数时,它并不直接支持PKCS7Padding,特别是当使用ECB模式时,因为ECB模式本身并不关心数据填充(每个块都是独立加密的,且块大小固定为AES的块大小,即128位或16字节)。然而,由于AES的块大小与PKCS#7填充的最小单位(1字节)相同,在ECB模式......
  • AES加密 & RSA签名
    publicclassMain{publicstaticvoidmain(String[]args)throwsException{//生成RSA密钥对KeyPairGeneratorkeyGen=KeyPairGenerator.getInstance("RSA");keyGen.initialize(1024);KeyPairkeyPair=keyGen.genera......
  • SHA加密算法
    SHA简介安全散列算法(英语:SecureHashAlgorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。  目前SHA有五个算法,分别是SHA-1、SHA-......
  • MD5加密算法
    MD5简介MD5算法是单向散列算法的一种。单向散列算法也称为HASH算法,是一种将任意长度的信息压缩至某一固定长度(称之为消息摘要)的函数(该压缩过程不可逆)。在MD5算法中,这个摘要是指将任意数据映射成一个128位长的摘要信息。并且其是不可逆的,即从摘要信息无法反向推演中原文,在演算过......
  • AES加密解密全流程演示__api基础使用
    publicstaticvoidmain(String[]args)throwsException{//共同约定秘钥和加密算法Stringcontent="你好,世界";//AES密钥长度通常为128、192或256位Stringkey="1234567812345678";//16字节*8Stringalgorithm="AE......
  • Python 和 Go 实现 AES 加密算法的技术详解
    AES(AdvancedEncryptionStandard,高级加密标准)是一种对称密钥加密算法,广泛应用于各种安全通信场景中。AES使用128、192或256位的密钥,能够提供不同级别的安全性。本文将详细讲解如何使用Python和Go来实现AES加密算法,提供代码示例并对其进行逐步解析。1.什么是AES加密......
  • Python 加密算法详解与应用
    引言随着互联网的普及,数据传输与存储中的安全性问题变得尤为重要。加密算法是一种有效保护数据的方法,广泛应用于文件加密、网络通信以及身份认证等场景中。Python作为一种易于上手且功能强大的编程语言,提供了多种加密库供开发者使用,如cryptography、pycryptodome等库。本篇文章将详......
  • Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密&解密
    加密效果:解密后的数据就是正常数据:后端:使用的是spring-cloud框架,在gateway模块进行操作<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version>......
  • 2024年人文艺术、教育与社会发展国际学术会议(HAESD 2024) 2024 International Conferen
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus大会时间:2024年9月27日-29日大会地点:中国西安三、大会介绍为迎接知识经济......
  • 吉林长春产权交易中心JS逆向:魔改AES请求加密与解密
    吉林长春产权交易中心JS逆向:魔改AES请求加密与解密......