Encryption 使用OpenSSL问题输出解密字符串
我有一个加密字符串,我需要解密它: 我所掌握的信息:Encryption 使用OpenSSL问题输出解密字符串,encryption,openssl,aes,pyopenssl,ecb,Encryption,Openssl,Aes,Pyopenssl,Ecb,我有一个加密字符串,我需要解密它: 我所掌握的信息: 使用的加密:RFC3826(AES-128) 加密字符串:AjL4iV8YSGnNOCQYOJXIP97GjCAYp2k0QLm56XxJN0p/yu5xQh5uitX3UmfP3bzZaXDd2u6hMwp6cxO3cNL1cg== 密钥:MySecretKey 当我使用以下网站时,我可以毫无问题地解密它: () 最终结果: Base64:ZTY3OTkzMmQtMTJiMi00OGEyLThlZjctMzAxY2RiOWFiNTdi
- 使用的加密:RFC3826(AES-128)
- 加密字符串:AjL4iV8YSGnNOCQYOJXIP97GjCAYp2k0QLm56XxJN0p/yu5xQh5uitX3UmfP3bzZaXDd2u6hMwp6cxO3cNL1cg==
- 密钥:MySecretKey
- Base64:ZTY3OTkzMmQtMTJiMi00OGEyLThlZjctMzAxY2RiOWFiNTdiMjg5WUgzSVRJWFJI
- 纯文本:e679932d-12b2-48a2-8ef7-301cdb9ab57b289YH3ITIXRH
$ echo -n 'e679932d-12b2-48a2-8ef7-301cdb9ab57b289YH3ITIXRH' | wc -c
48
这是16的倍数。但密文长度为64字节。这可以通过base64在将密文字符串送入wc
之前对其进行解码来看出:
$ echo -n 'AjL4iV8YSGnNOCQYOJXIP97GjCAYp2k0QLm56XxJN0p/yu5xQh5uitX3UmfP3bzZaXDd2u6hMwp6cxO3cNL1cg==' | openssl base64 -A -d | wc -c
64
即使明文长度为16字节的倍数,也会将16字节添加到密文中,这意味着会应用填充。因此,在openssl
命令中,不应使用-nopad
选项
其次,您的openssl
命令将密钥作为密码短语提供,而网站不会将“secret key”输入字段解释为密码短语。除了在openssl
命令中使用-pass
之外,您应该使用-K
,它将密钥作为实际的字节值序列提供
例如,以下openssl
命令可以在网站表单中成功复制:
$ echo -n '1234567890123456' | openssl enc -aes-128-ecb -K 6162636465666768696a6b6c6d6e6f70 -nosalt -base64 -A -out string.txt
$ cat string.txt
M3q3c85LGdEj9k8iep/J145kzoc/F027JCP82BRYDhU=
用于加密和
$ cat string.txt | openssl enc -d -aes-128-ecb -K 6162636465666768696a6b6c6d6e6f70 -nosalt -base64 -A
1234567890123456
用于解密
为了在网站中获得相同的结果,在明文输入字段中使用的字符串是1234567890123456
,在密钥输入字段中使用的字符串是abcdefghijklmnop
。字段“AES加密输出”的内容将与string.txt
的内容相同,这也是您需要在“要解密的文本”字段中输入的内容
(用于
echo
的-n
标志和用于openssl enc
的-A
标志用于避免在末尾添加换行符)。在Java中解密,如果有人感兴趣:非常感谢您的回答!现在一切正常!