如何实现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

原创文章,作者:SLDRG,如若转载,请注明出处:http://www.wangzhanshi.com/n/16331.html

(0)
SLDRG的头像SLDRG
上一篇 2025年1月2日 12:39:09
下一篇 2025年1月2日 12:39:11

相关推荐

  • ssl证书有什么用

    随着科技越来越发达,网络世界已经走入众多家庭中来,我们所知道的加密套接字协议层证书,加密套接字协议层证书就是协议,Ssl证书有什么用吗?   一、关于ssl证书 而以加密…

    2025年1月2日
  • SSL免费证书去哪里申请

    近年来访问未加密的网站可能会很紧张,尤其是当您考虑提供个人信息时。一方面,我们真的希望这些获得网站相关的服务。另一方面,由于这些网站没有使用SSL证书或者使用SSL免费证书,我们在…

    2025年1月2日
  • SSL证书品牌有哪些以及选择的方法

    网站当中如果有一定的安全证书,就可以更好的保护网站信息安全,防止信息被不法分子盗用。因此,很多企业都会给自己的网站配置SSL证书,不过配置该证书之前需要先去申请。据了解,SSL证书…

    2025年1月2日
  • 购买ssl证书需要多少钱

    随着网络安全意识普及,网站上的所有数据包含用户名登陆、订单明细、交易内容等敏感信息都是可见的,很容易被第三方或黑客所监听、窃取或你篡改。而使用SSL证书可以给这种文件传输方式进行加…

    2025年1月2日
  • nginx配置ssl证书的流程步骤

    一、申请证书 首先,大家需要先到阿里云的云服务商处申请一个SSL免费证书。要提醒站长们,亚洲诚信机构颁发的SSL证书,一个域名对应一个证书,子域名需要另外申请。然后下载的是一个zi…

    ssl证书 2025年1月2日
  • 内网证书中SSL证书有哪些优势

    今是网络社会,每个企业都有属于自己的网站,虽然有了网站企业的发展比较好。但是,网站的安全性却是最重要的一个内容,如果想要网站更加安全,就需要给网站一定的安全保障。SSL证书是一种安…

    2025年1月2日
  • OpenSSL中的加密算法指令有哪些

    OpenSSL是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库、应用程序、SSL协议库。Openssl实现了SSL协议所需要的大多数算法。下面介绍使用Open…

    ssl证书 2025年1月2日
  • SSL证书是怎么保证网站安全的

    浏览器在互联网中充当着十分重要的角色。浏览器是用户访问互联网的重要窗口,当用户访问网站时,都须通过浏览器指向正确的网站地址来完成。如果当遇到不安全的网站,浏览器向用户发出警告时,认…

    2025年1月2日
  • 便宜的ssl证书是什么

    现在网络进步得如此快速,很多人会自己建立网站,但是现在是一个大数据的时代,在网站上会很容易留下痕迹,所以每一个网站都会选择认证一个ssl证书,用来保证网站的信息传输安全性。以前我们…

    2025年1月2日
  • OpenSSl生成SSL证书(支持https)

    一:环境与安装说明      WIN7_64,Nginx服务器,OpenSSL_Win64。本人使用phpStudy集成开发环境,使用Nginx+PH…

    2025年1月2日

发表回复

登录后才能评论