• [转]RSA,DSA等加解密算法介绍


    From : http://blog.sina.com.cn/s/blog_a9303fd90101cgw4.html

    1)      MD5/SHA

    MessageDigest是一个数据的数字指纹.即对一个任意长度的数据进行计算,产生一个唯一指纹号.

    MessageDigest的特性:

    A)     两个不同的数据,难以生成相同的指纹号

    B)      对于指定的指纹号,难以逆向计算出原始数据

    代表:MD5/SHA

    2)    DES

    单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密.

    单密钥算法是一个对称算法.

    缺点:由于采用同一个密钥进行加密解密,在多用户的情况下,密钥保管的安全性是一个问题.

    代表:DES

    3)  RSA

    RSA 是一种非对称加解密算法。

    RSA is named from the initials of the authors, Ron Rivest, Adi Shamir, and

    Leonard Adleman,who first published the algorithm.  

    RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA 的安全性

    是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。

    公钥用于加密,它是向所有人公开的;私钥用于解密,只有密文的接收者持有。

    适用OPENSSL 适用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

    4)  DSA (Digital Signature Algorithm)

             DSA 一般用于数字签名和认证

         DSA是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。

         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

    5) 其他选择: ECC

     RSA 与 DSA 各有优缺点,那有没一个更好的选择呢?答案是肯定的,ECC(Elliptic Curves Cryptography):椭

    圆曲线算法

     ECC 与 RSA 相比,有以下的优点:
    (1)相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。
    (2)计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
    (3)存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
    (4)带宽要求低使得ECC具有广泛得应用前景。

     这使得ECC 取代RSA成为可能。

  • 相关阅读:
    一起谈.NET技术,深入ASP.NET 2.0的提供者模型(2) 狼人:
    一起谈.NET技术,从.NET中委托写法的演变谈开去(上):委托与匿名方法 狼人:
    一起谈.NET技术,将Flash 嵌入WPF 程序 狼人:
    一起谈.NET技术,数组排序方法的性能比较(中):Array.Sort<T> 实现分析 狼人:
    人一生当中最应该珍惜的十种人
    《程序员的第一年》复习一下C#的【封装 多态 继承 简单计算器源码实例】
    myeclipse 修改模板
    三星将在百思买零售店内开设1400家体验店
    谷歌Q3推Android本 蚕食自己平板市场
    Spring Setting
  • 原文地址:https://www.cnblogs.com/Athrun/p/3781508.html
Copyright © 2020-2023  润新知