我所掌握的信息:
当我使用以下网站时,我可以解密,没有问题:
当我试图使用OpenSSL对其进行解密时,我有一些特殊的字符:
openssl enc-aes-128-ecb-d-a-nopad-nosalt-pass pass:MySecretKey-in String.txt
输出字符串:|uz|vmwn☺+|+\|||C|||×B×H·4é+>G[ë||_I(a&1·:0>è||||R
我做错什么了吗?
从您正在做的(有限的)描述中,可以识别出两个缺陷。
首先,您正在使用的网站在加密数据时确实应用了填充。您提供的明文由48个字节组成:
$ 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
$ 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
的内容相同,这也是您需要输入到“text to be decrypted”字段中的内容。
(echo
的-n
标志和OpenSSL enc
的-a
标志用于避免在结尾处添加换行符)。
我在解密使用OpenSSL加密的字符串时遇到了一些麻烦。我没有更改加密代码的权限,但我有读取权限: 加密代码(无法修改)
我想加密应用程序外的密钥并传递给应用程序。在应用程序中,当使用这些密钥时,必须再次使用加密时使用的密钥解密字符串。 在Swift中解密 AES
或者唯一的方法是运行一个脚本,它将用mcrypt解密我存储的所有加密数据,并用openssl编码? 谢谢
我正在使用CryptoJS加密密码,下面是我正在使用的示例代码 当函数被执行时,它提供的数据如下所示 Salt:923CA1AB6DC88806B05F012C5F7DF49F脚本。JS:13:11 Salt_Hex:923CA1AB6DC88806B05F012C5F7DF49F脚本。JS:14:11密钥:1438927D9BC8A42B9689A93C0FEFC8506A5BE0819FEB2
由于 mcrypt 被认为是过时的,我的任务是升级当前代码以使用 openssl。听起来很简单,但是...经过几天的尝试和失败,我觉得自己疯了。 我的问题是:有什么方法可以用以前用mcrypt加密的openssl数据解密吗?我读过很多关于这个问题的帖子,大多数帖子都说,在运行mcrypt之前,需要对数据进行手动填充。问题是,mcrypted数据已经加密(使用mcrypt提供的自动空填充),并驻留在
在Java代码中,我应该解密一个加密的单词,如下所示: 我是加密新手,但是我发现了一些如何用Java加密/解密一些AES/CBC的示例。但是它需要盐、密钥和Iv。我发现OpenSsl正在从“密码”中导出这些值,但我没有发现如何Java解密加密值。 有人知道它是怎么工作的吗?盐、钥匙和/或Iv是否存储在加密值中?谢谢你的回答。