在日常系统管理工作中,需要作一些加解密的工作,通过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
当然openssl 是一个很实用的加密工具包,还有很多东西值得学习和总结,以后有空再说!
转自:
openssl 非对称加密DSA,RSA区别与使用介绍
分享到:
相关推荐
使用OpenSSL-RSA加密解密 什么是OpenSSL? OpenSSL是开放源代码库,可使用TLS(传输安全层)和SSL(安全套接字层)在网络上提供安全通信。 它支持许多加密算法AES,DSA,RSA,SHA1,SHA2,MD5。。有关更多信息 什么...
本文实例讲述了C语言使用openSSL库AES模块实现加密功能。分享给大家供大家参考,具体如下: 概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES。加密方和解密方都持有相同的密钥。对称...
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也...
21.9 对称加密过程 152 21.10 编程示例 152 第二十二章 PEM格式 159 22.1 PEM概述 159 22.2 openssl的PEM实现 160 22.3 PEM函数 161 22.4 编程示例 161 第二十三章 Engine 165 23.1 Engine概述 165 23.2 Engine支持...
非对称加密算法 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的...
142 21.6 非对称函数 143 21.7 BASE64编解码函数 144 21.8其他函数 144 21.9 对称加密过程 146 21.10 编程示例 147 第二十二章 Openssl PEM格式 154 22.1 PEM概述 154 22.2 openssl的PEM...
较少了Openssl重RSA,DSA,对称加密,EVP等等...的具体实例和接口
AES 可用于 cbc、ctr 或 gcm 模式进行对称加密; RSA 用于非对称(公钥)加密或 EC 用于 Diffie Hellman。 高级信封函数结合了 RSA 和 AES 来加密任意大小的数据。 其他实用程序包括密钥生成器、散列函数(md5、sha...
142 21.6 非对称函数 143 21.7 BASE64编解码函数 144 21.8其他函数 144 21.9 对称加密过程 146 21.10 编程示例 147 第二十二章 Openssl PEM格式 154 22.1 PEM概述 154 22.2 openssl的PEM...
1.1 对称算法.....................................................................................................................10 1.2 摘要算法...........................................................
贯穿本技巧介绍的工具passe-partout可以在找到介绍对于具有重要机密性需求的软件,不对称加密技术的使用正在增长。 这些算法的安全性取决于私钥的机密性。 通常,操纵RSA或DSA秘密密钥的软件会要求用户输入密码,以...
M2加密 维护者: 马捷·塞普尔 网站: 说明文件: 电子邮件清单: 或 IRC频道: #m2crypto在Freenode上 M2Crypto = Python + OpenSSL + SWIG M2Crypto是用于Python的加密和SSL工具包。 M2代表“我也是!” ...
1.1 对称算法.....................................................................................................................10 1.2 摘要算法...........................................................
##公钥工具Pubkeytool (pkt) 是一个简单、轻量级的命令行工具,用于使用非对称密钥(公钥/私钥对)进行验证和加密。 它支持 RSA、ECC 和 DSA。 它还具有一些用于散列和 BASE64(解码)编码的实用程序命令。 ...