我必须加密散列(如:
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2使用已经提供给我的公钥(例如:mykey.key)来使用RSA算法。我该怎么做呢。我看到一些网站告诉我要使用openssl,但我不知道该怎么做。
编辑:我试过这样做
我创建了一个文件并通过以下操作将哈希推入其中
echo "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2" >file.txt然后接着是这个
openssl rsautl -inkey mykey.key -pubin -encrypt -in file.txt > file.txt.enc当我试图在记事本上打开file.txt.enc时,我得到了以下信息:

不确定这是否是一个成功的加密,因为我需要的密文结果二进制格式。
发布于 2015-09-30 15:58:17
不确定这是否是一个成功的加密,因为我需要的密文结果二进制格式。
嗯,如果你真的想测试加密是否成功,请立即解密,看看你是否能拿回你的纯文本。如果你拿回你的纯文本,你就好了。
我想你搞不懂“二进制格式”到底是什么意思。
这是:
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
实际上是文本十六进制格式-二进制值的文本表示形式。
系统上的任何文件或数据块最终都是一系列字节--而一个字节(为了保持简单,还不要担心比特)只是一个从0到255之间的数字。您可以将字节写入或显示为十进制数、十六进制数、二进制数或应用程序处理这些字节所需的任何内容。
有多种方案将文本表示为数字、UTF-8、Unicode等.
为了说明,文本"2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2“的字符串在转换为字节时如下(以十进制显示):
50 99 49 52 48 48 102 54 57 56 54 55 53 55 49 97
98 52 101 54 48 100 51 98 56 102 48 49 101 48 98 49
55 99 55 98 101 56 57 101 51 50 49 102 57 49 102 56
97 48 55 99 100 51 57 101 101 98 97 50 48 50 101 50再加上一条新线路。总共有65个字节,130个如果您的地区使用16位字符,例如Unicode.Unicode将与上面的值相同,除非每个值前面有一个0。显然,它不等同于文本所代表的值。
因此,上面的一系列字节是您告诉openssl要实际加密的,而不是实际值"2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2“(这将是一个非常长的十进制数)。
因此,基于上述,您的file.txt.enc可能由65或130个随机值组成。这就是记事本想要渲染的。
现在,如果您想要您的file.txt.enc的内容的文本十六进制表示-我认为这是可行的(基于这):
xxd -p file | tr -d '\n'
发布于 2015-09-30 15:57:59
你可以在这里找到你的许多问题的答案(举个例子):
https://www.madboa.com/geek/openssl/特别是,如果您通过电子邮件发送加密的结果,您可能希望base64使用'enc‘子命令中的'-a’选项,或者作为单独的步骤,使用'base64‘openssl子命令对其进行编码。
然后,这将产生一个结果,即ASCII文本,而不是一个不可打印字节的二进制文件。
我建议您首先检查您的加密,创建您自己的(测试) RSA密钥文件(也使用openssl,参见上面的链接),然后尝试encrypting-(base64)encoding-decoding-decrypting.的‘往返’。
如果您使用自己的测试RSA密钥(对)的结果与您输入的相同,那么可以合理地说,至少您的机制都是正确的。
然后,您可以尝试使用提供的RSA密钥文件向您的收件人发送其他文本,以验证所有内容都是正确的,然后再发送您的“真实”数据--我希望这与您输入的问题不一样!(除非您只是使用加密进行身份验证)。
https://unix.stackexchange.com/questions/233027
复制相似问题