1.将十六进制密文转换为二进制密文。
2.按照 密文结构 数据格式中所述拆分字段,获取 随机加密盐 (encryptionSalt)、 随机 HMAC 盐 (HMACSalt)、 初始化向量 (IV)、CBC 模式密文 (ciphertext)。
3.使用 PBKDF2 算法生成 加密密钥 (cipherKey)。将字符串格式的 密文(电渠分配) 和 随机加密盐 (encryptionSalt)使用 SHA1 PRF 算法进行 10000 次迭 代,得到 加密密钥 (cipherKey)。长度为 32 字节。
4.使用 PBKDF2 算法生成 HMAC 密钥 (hmacKey )。将字符串格式的 密文(电渠分配) 和 随机 HMAC 盐 (HMACSalt)使用 SHA1 PRF 算法进行 10000 次迭 代,得到 HMAC 密钥 (hmacKey )。长度为 32 个字节。
5.使用 加密密钥 (cipherKey)和 HMAC 密钥 (hmacKey ),以及 初始化向量 (IV),用 AES256 和 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
跪谢