我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何实现Linux下OpenSSL的DSA与RSA非对称加密

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何实现Linux下OpenSSL的DSA与RSA非对称加密

这篇文章主要讲解了“如何实现Linux下OpenSSL的DSA与RSA非对称加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux下OpenSSL的DSA与RSA非对称加密”吧!

在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求!
1. openssl RSA 加解密
RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥的方法进行加解密
公钥 用于加密,它是向所有人公开的 ; 私钥用于解密,只有密文的接收者持有
生成一个密钥(私钥)

代码如下:


 [root@hunterfu ~]# openssl genrsa -out private.key 1024


注意: 需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密,后面的1024是生成密钥的长度.
通过密钥文件private.key 提取公钥

代码如下:


 [root@hunterfu ~]# openssl rsa -in private.key -pubout -out pub.key


使用公钥加密信息

代码如下:


 [root@hunterfu ~]# echo -n "123456" | openssl rsautl -encrypt -inkey pub.key -pubin >encode.result


使用私钥解密信息

代码如下:


 [root@hunterfu ~]#cat encode.result | openssl rsautl -decrypt  -inkey private.key
 123456


至此,一次RSA加密解密的过程已经完成!


2. openssl DSA签名与验证
和RSA加密解密过程相反,在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性
DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多.
生成一个密钥(私钥)

代码如下:


 [root@hunterfu ~]# openssl dsaparam -out dsaparam.pem 1024
 [root@hunterfu ~]# openssl gendsa -out privkey.pem dsaparam.pem


生成公钥

代码如下:


 [root@hunterfu ~]# openssl dsa -in privkey.pem -out pubkey.pem -pubout
 [root@hunterfu ~]# rm -fr dsaparam.pem


使用私钥签名

代码如下:


 [root@hunterfu ~]# echo -n "123456" | openssl dgst -dss1 -sign privkey.pem > sign.result


使用公钥验证

代码如下:


 [root@hunterfu ~]# echo -n "123456"  | openssl dgst -dss1 -verify pubkey.pem -signature sign.result
 Verified OK


至此,一次DSA签名与验证过程完成!


3. 总结及注意事项
注意: 由于信息经过加密或者签名后,都变成不可读模式,为了方便终端查看和传输使用(url提交数据,需要作urlencode操作),可以使用base64进行编码
openssl enc -base64 -A :将加密后的信息使用base64编码
openssl enc -d -base64 -A : 将信息使用base64反编码
java中此私钥需要转换下格式才能使用:

代码如下:


 [root@hunterfu ~]# openssl pkcs8 -topk8 -nocrypt -in private.key -outform PEM -out java_private.key

感谢各位的阅读,以上就是“如何实现Linux下OpenSSL的DSA与RSA非对称加密”的内容了,经过本文的学习后,相信大家对如何实现Linux下OpenSSL的DSA与RSA非对称加密这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何实现Linux下OpenSSL的DSA与RSA非对称加密

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何实现Linux下OpenSSL的DSA与RSA非对称加密

这篇文章主要讲解了“如何实现Linux下OpenSSL的DSA与RSA非对称加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux下OpenSSL的DSA与RSA非对称加密”吧
2023-06-12

如何使用Java实现RSA非对称加密算法

这篇文章主要介绍如何使用Java实现RSA非对称加密算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、非对称加密非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公
2023-06-15

java项目中的非对称加密怎么利用RSA方式实现

java项目中的非对称加密怎么利用RSA方式实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java 中RSA的方式实现非对称加密的实例RSA通俗理解:你只要
2023-05-31

Springboot如何整合JwtHelper实现非对称加密

这篇文章主要介绍了Springboot如何整合JwtHelper实现非对称加密,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、生成公私钥对提供两种方法,一种基于命令行中的K
2023-06-29

如何在Java项目中实现一个非对称加密算法

如何在Java项目中实现一个非对称加密算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法
2023-05-31

如何实现Linux下交互式与非交互式修改用户密码

这篇文章主要介绍“如何实现Linux下交互式与非交互式修改用户密码”,在日常操作中,相信很多人在如何实现Linux下交互式与非交互式修改用户密码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现Linux
2023-06-09

编程热搜

目录