首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RSA加密哈希

使用RSA加密哈希
EN

Unix & Linux用户
提问于 2015-09-30 14:44:48
回答 2查看 2K关注 0票数 1

我必须加密散列(如:

代码语言:javascript
复制
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2

使用已经提供给我的公钥(例如:mykey.key)来使用RSA算法。我该怎么做呢。我看到一些网站告诉我要使用openssl,但我不知道该怎么做。

编辑:我试过这样做

我创建了一个文件并通过以下操作将哈希推入其中

代码语言:javascript
复制
echo "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2" >file.txt

然后接着是这个

代码语言:javascript
复制
openssl rsautl -inkey mykey.key -pubin -encrypt -in file.txt > file.txt.enc

当我试图在记事本上打开file.txt.enc时,我得到了以下信息:

不确定这是否是一个成功的加密,因为我需要的密文结果二进制格式。

EN

回答 2

Unix & Linux用户

发布于 2015-09-30 15:58:17

不确定这是否是一个成功的加密,因为我需要的密文结果二进制格式。

嗯,如果你真的想测试加密是否成功,请立即解密,看看你是否能拿回你的纯文本。如果你拿回你的纯文本,你就好了。

我想你搞不懂“二进制格式”到底是什么意思。

这是:

2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2

实际上是文本十六进制格式-二进制值的文本表示形式。

系统上的任何文件或数据块最终都是一系列字节--而一个字节(为了保持简单,还不要担心比特)只是一个从0到255之间的数字。您可以将字节写入或显示为十进制数、十六进制数、二进制数或应用程序处理这些字节所需的任何内容。

有多种方案将文本表示为数字、UTF-8、Unicode等.

为了说明,文本"2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2“的字符串在转换为字节时如下(以十进制显示):

代码语言:javascript
复制
 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'

票数 1
EN

Unix & Linux用户

发布于 2015-09-30 15:57:59

你可以在这里找到你的许多问题的答案(举个例子):

代码语言:javascript
复制
https://www.madboa.com/geek/openssl/

特别是,如果您通过电子邮件发送加密的结果,您可能希望base64使用'enc‘子命令中的'-a’选项,或者作为单独的步骤,使用'base64‘openssl子命令对其进行编码。

然后,这将产生一个结果,即ASCII文本,而不是一个不可打印字节的二进制文件。

我建议您首先检查您的加密,创建您自己的(测试) RSA密钥文件(也使用openssl,参见上面的链接),然后尝试encrypting-(base64)encoding-decoding-decrypting.的‘往返’。

如果您使用自己的测试RSA密钥(对)的结果与您输入的相同,那么可以合理地说,至少您的机制都是正确的。

然后,您可以尝试使用提供的RSA密钥文件向您的收件人发送其他文本,以验证所有内容都是正确的,然后再发送您的“真实”数据--我希望这与您输入的问题不一样!(除非您只是使用加密进行身份验证)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/233027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档