`
desert3
  • 浏览: 2140712 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

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

当然openssl 是一个很实用的加密工具包,还有很多东西值得学习和总结,以后有空再说!

转自:openssl 非对称加密DSA,RSA区别与使用介绍
分享到:
评论
1 楼 geelpheels 2016-02-06  
你的神马故事?
说给我听听。
我知道日本淫很会编故事。
你是日本淫?

相关推荐

    Encrypt-Decrypt-with-OpenSSL---RSA:使用openssl进行数据加密和解密-RSA

    使用OpenSSL-RSA加密解密 什么是OpenSSL? OpenSSL是开放源代码库,可使用TLS(传输安全层)和SSL(安全套接字层)在网络上提供安全通信。 它支持许多加密算法AES,DSA,RSA,SHA1,SHA2,MD5。。有关更多信息 什么...

    C语言使用openSSL库AES模块实现加密功能详解

    本文实例讲述了C语言使用openSSL库AES模块实现加密功能。分享给大家供大家参考,具体如下: 概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES。加密方和解密方都持有相同的密钥。对称...

    openssl-1.0.0a

     OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也...

    openssl 编程 当前版本

    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-1_0_0d_Win32

    非对称加密算法 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的...

    openssl编程

    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 编程

    较少了Openssl重RSA,DSA,对称加密,EVP等等...的具体实例和接口

    openssl:R 的 OpenSSL 绑定

    AES 可用于 cbc、ctr 或 gcm 模式进行对称加密; RSA 用于非对称(公钥)加密或 EC 用于 Diffie Hellman。 高级信封函数结合了 RSA 和 AES 来加密任意大小的数据。 其他实用程序包括密钥生成器、散列函数(md5、sha...

    OpenSSL编程(三合一版).zip

    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编程.pdf

    1.1 对称算法.....................................................................................................................10 1.2 摘要算法...........................................................

    passe-partout

    贯穿本技巧介绍的工具passe-partout可以在找到介绍对于具有重要机密性需求的软件,不对称加密技术的使用正在增长。 这些算法的安全性取决于私钥的机密性。 通常,操纵RSA或DSA秘密密钥的软件会要求用户输入密码,以...

    M2Crypto:适用于Python的OpenSSL(2.x和3.x)(由SWIG生成)

    M2加密 维护者: 马捷·塞普尔 网站: 说明文件: 电子邮件清单: 或 IRC频道: #m2crypto在Freenode上 M2Crypto = Python + OpenSSL + SWIG M2Crypto是用于Python的加密和SSL工具包。 M2代表“我也是!” ...

    openssl编程帮助文档

    1.1 对称算法.....................................................................................................................10 1.2 摘要算法...........................................................

    pubkeytool:一个轻量级的命令行工具,用于处理公钥 (ECCRSADSA)、签名、加密、校验和 (MD5SHA) 和二进制数据编码解码(十六进制,BASE64)

    ##公钥工具Pubkeytool (pkt) 是一个简单、轻量级的命令行工具,用于使用非对称密钥(公钥/私钥对)进行验证和加密。 它支持 RSA、ECC 和 DSA。 它还具有一些用于散列和 BASE64(解码)编码的实用程序命令。 ...

Global site tag (gtag.js) - Google Analytics