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成为可能。

最新文章

  1. Linux模块编程框架
  2. 深入理解javascript描述元素内容的5个属性
  3. Objective-C 在Categroy中创建属性(Property)
  4. 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)
  5. Linux 多线程应用中如何编写安全的信号处理函数
  6. DB2 DATE类型在显示的时候,带有00:00:00,去掉的方法,使用VARCHAR()函数
  7. Intellij Idea 15 生成serialVersionUID的方法
  8. go exec: "gcc": executable file not found in %PATH%
  9. hdu4323Magic Number(dp)
  10. Div在BOdy中居中
  11. linux 下使用 tc 模拟网络延迟和丢包(转)
  12. word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型
  13. Trie字典树算法
  14. JS的事件动态绑定机制
  15. 剑指offer编程题Java实现——面试题11数值的整数次方
  16. 虚拟机VMware Workstation Pro下安装ubuntu-14.04.4(64位)方法(附ubuntu-14.04-desktop-amd64.iso下载链接)
  17. vuex是什么东西?
  18. 解决centos7 python3 上下左右变ABCD
  19. 学习笔记1--响应式网页+Bootstrap起步+全局CSS样式
  20. 软件151 王楚博 maven的导入

热门文章

  1. 2019 CCPC wannfly winter camp Day 5
  2. mysql 主键与外键
  3. VS2010中设置程序以管理员身份运行
  4. ajax和302(转)
  5. ViewPager 无限循环
  6. VMware虚拟机中CentOS设置固定IP
  7. hdu 4562 dp ***
  8. 【Codeforces666E】Forensic Examination 后缀自动机 + 线段树合并
  9. 本地hosts文件IP地址解析
  10. process information unavailable 的解决办法