解密PSKC文件中的CipherValue


0

这与我在此问题中所做的相反-https: //crypto.stackexchange.com/questions/21021/encryption-and-hmac-in-a-pskc-file

规格位于https://tools.ietf.org/rfc/rfc6030.txt

数据/种子使用AES-128-CBC和密钥以及IV加密。IV放在加密数据的前面,整个内容以base-64编码并存储在CipherValue字段中。

我有(这是我有一个示例pskc文件,而不是RFC)。

CipherValue/EncryptedText = v5dgOiUq1Hgja0g1SI9VpcHu81DLdcDqT8C3+k8wlQtk5KL1KErwojxLPSNO8lZt
Encryption Key = E9C1E401122EE194D620465A775D9C97
Algo = AES-128-CBC

我需要从中获取解密的数据

这就是我在做什么

我将CipherValue存储在名为cv的文件中。

openssl base64 -d -A < cv > cv.bin

我得到一个48字节的cv.bin

我分成两部分

iv.bin = 16 bytes
data.bin = 32 bytes

我将iv.bin转换为十六进制

xxd -p < iv.bin
bf97603a252ad478236b4835488f55a5

所以我的

iv = bf97603a252ad478236b4835488f55a5

我将密钥转换为十六进制

我有一个文件调用k.b64,其中包含 E9C1E401122EE194D620465A775D9C97

openssl base64 -d -A < k.b64 > k.bin
xxd -p < k.bin
13d0b5138d35d76d84135f780fadb4e3ae40efbe43f42f7b

key = 13d0b5138d35d76d84135f780fadb4e3ae40efbe43f42f7b

现在我解密

openssl enc -aes-128-cbc -d  -K 13d0b5138d35d76d84135f780fadb4e3ae40efbe43f42f7b -iv bf97603a252ad478236b4835488f55a5  < data.bin

我收到以下错误

▓\=Bt═┐|)éïh│■ìcbad decrypt
62008:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:.
\crypto\evp\evp_enc.c:539:

我在这里做错了什么?

Answers:


1

(从注释整理到逻辑顺序。)

在此示例中,加密密钥值为E9C1E401122EE194D620465A775D9C9732个字符,它们是有效的十六进制数字,本质上也是有效的base64字符。通常,人们应该知道创建(或在适当情况下发送)该过程的数据的编码。

这个值不太可能是base64,因为除非有意制作,否则多个字节以上的base64编码几乎总是包含一些不是十六进制数字的字符。并且它是不可能的,因为BASE64的32个字符不使用Base64填充(被BASE64 =)编码一个24个字节的值,但我们知道该值是AES-128键是16个字节。

因此,此密钥是十六进制编码的,并赋予它openssl enc -K期望十六进制正确解密的密钥。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.