经常使用加密算法

下面的内容是在网上看到的博客中摘取的部分。html

原做者:算法

(colife,https://www.cnblogs.com/colife/p/5566789.html)后端

(麦田里的守望者-Rye,https://blog.csdn.net/wangjiang_qianmo/article/details/88073848 )安全

 

常见的加密算法能够分红三类,对称加密算法,非对称加密算法和Hash算法。数据结构

对称加密

指加密和解密使用相同密钥的加密算法。加密

对称加密算法的安全性取决于加密密钥的保存状况。.net

优势:加解密的高速度和使用长密钥时的难破解性。htm

缺点:密匙分发困难blog

常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC四、RC五、RC6和AESip

非对称加密

指加密和解密使用不一样密钥的加密算法,也称为公私钥加密,私匙解密公匙解密。

优势:因为公钥是能够公开的,用户只要保管好本身的私钥便可,所以加密密钥的分发将变得十分简单。

缺点:解密速度远小于对称加密,极端状况下可能比非对称加密慢一千倍。

常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

Hash算法

    Hash算法特别的地方在于它是一种单向算法,用户能够经过Hash算法对目标信息生成一段特定长度的惟一的Hash值,却不能经过这个Hash值从新得到目标信息。所以Hash算法经常使用在不可还原的密码存储、信息完整性校验等。

常见的Hash算法:MD二、MD四、MD五、HAVAL、SHA、SHA-一、HMAC、HMAC-MD五、HMAC-SHA1

部分算法介绍:

 HMAC

是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要做为输出。

如何破解哈希加密

字典攻击和暴力攻击

简单的讲就是去猜,猜一个密码用哈希加密一下去试。

查表法

查表法对于破解一系列算法相同的哈希值有着无与伦比的效率。主要的思想就是预计算密码字典中的每一个密码,而后把哈希值和对应的密码储存到一个用于快速查询的数据结构中。一个良好的查表实现能够每秒进行数百次哈希查询,即便表中储存了几十亿个哈希值。

彩虹表

彩虹表是一种在时间和空间的消耗上找寻平衡的破解技术。它和查表法很相似,可是为了使查询表占用的空间更小而牺牲了破解速度。由于它更小,因而咱们能够在必定的空间内存储更多的哈希值,从而使攻击更加有效。可以破解任何8位及如下长度MD5值的彩虹表已经出现了。

一种让查表法和彩虹表都失去做用的技术,叫作加盐。

查表法和彩虹表只有在全部密码都以相同方式进行哈希加密时才有效。若是两个用户密码相同,那么他们密码的哈希值也是相同的。咱们能够经过“随机化”哈希来阻止这类攻击,因而当相同的密码被哈希两次以后,获得的值就不相同了。

 

下面是对客户端与服务端通讯数据加密比较通用的方案:

  1. 客户端生成AES密钥,并保存AES密钥
  2. 客户端用AES密钥对请求传输数据进行加密
  3. 客户端使用RSA公钥对AES密钥加密,而后把值放到自定义的一个请求头中
  4. 客户端向服务端发起请求
  5. 服务端拿到自定义的请求头值,而后使用RSA私钥解密,拿到AES密钥
  6. 服务端使用AES密钥对请求数据解密
  7. 服务端对响应数据使用AES密钥加密
  8. 服务端向客户端发出响应
  9. 客户端拿到服务端加密数据,并使用以前保存的AES密钥解密

用户密码储存:
密码通常在客户端经过Hash算法加密后,传到后端再进行存储。

 

 

JavaScript 中的加密算法

js加密算法下载

Python中的加密算法

相关文章
相关标签/搜索