Python AES-256 & CBC 解密求助

2020-06-22 21:00:33 +08:00
 akumazero
1.将十六进制密文转换为二进制密文。
2.按照 密文结构 数据格式中所述拆分字段,获取 随机加密盐 (encryptionSalt)、 随机 HMAC 盐 (HMACSalt)、 初始化向量 (IV)、CBC 模式密文 (ciphertext)。
3.使用 PBKDF2 算法生成 加密密钥 (cipherKey)。将字符串格式的 密文(电渠分配) 和 随机加密盐 (encryptionSalt)使用 SHA­1 PRF 算法进行 10000 次迭 代,得到 加密密钥 (cipherKey)。长度为 32 字节。
4.使用 PBKDF2 算法生成 HMAC 密钥 (hmacKey )。将字符串格式的 密文(电渠分配) 和 随机 HMAC 盐 (HMACSalt)使用 SHA­1 PRF 算法进行 10000 次迭 代,得到 HMAC 密钥 (hmacKey )。长度为 32 个字节。
5.使用 加密密钥 (cipherKey)和 HMAC 密钥 (hmacKey ),以及 初始化向量 (IV),用 AES­256 和 CBC 模式进行解密。得到 原文 。

哪位大神知道如何用 Python3 解密这种步骤的密文
有个抽象语言的解密步骤根本看不懂

def Decrypt(Password, Message) = (Version,Options,EncryptionSalt,HMACSalt,IV,Ciphertext,HMAC) = Split(Message) EncryptionKey = PKBDF2(EncryptionSalt, 32 length, 10k iterations, Password) HMACKey = PKBDF2(HMACSalt, 32 length, 10k iterations, password)
Header = 3 || 1 || EncryptionSalt || HMACSalt || IV
Plaintext = AES256Decrypt(Ciphertext, ModeCBC, IV, EncryptionKey) ComputedHMAC = HMAC(Header || Ciphertext, HMACKey, SHA-256)
if ConsistentTimeEqual(ComputedHMAC, HMAC) return Plaintext else return Error


跪谢
2208 次点击
所在节点    Python
5 条回复
akumazero
2020-06-22 21:34:26 +08:00
求助 求助
crystom
2020-06-22 22:57:54 +08:00
crystom
2020-06-22 22:58:14 +08:00
crystom
2020-06-22 22:59:48 +08:00
我用谷歌一搜,搜到你在另一个论坛发的帖子了
akumazero
2020-06-22 23:06:23 +08:00
这个我试了不行不知道为啥

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683868

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX