常用的加密算法

常见的七种加密算法 以及实现

数字签名、信息加密是前后端开发经常使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等。不同应用场景可能需要搭配不同的应用算法来实现。

数字签名

数字签名,通过可鉴别的数字信息验证 自身身份的一种方式,可以理解为现实生活当中身份证的身份证号码。

一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。发送者持有私钥,接收者持有私钥对应的公钥。能够在接受到来自发送者信息时用于验证其身份。

加密和解密

  • 加密
    • 数据加密的基本过程,就是对原来为明文的文件或按照某种算法进行处理,让其成为不可读的一段代码,通常称为密文。用于保护数据不被人获取,窃取。
  • 解密
    • 加密的逆过程为解密,即将该编码信息转化为其原来数据的过程

对称加密和非对称加密

加密算法份对称加密和非对称加密,其中对称加密的算法与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外还有一类不需要密钥的散列算法。

常见的对称加密算法主要有DES 3DES AES等,常见的非堆成算法主要有RSA DSA 等,散列算法主要有SHA-1 MD5

对称加密

对称加密算法时应用较早的加密算法,又称为共享密钥加密算法。在对称加密算法中,使用的密钥只有一个,发送和接送双方都使用这个密钥对数据进行加密和解密。

  1. 数据加密过程:在对称加密算法中,数据发送将铭文和加密密钥一起经过特殊加密处理,生成复杂的加密密文进行发送

  2. 数据解密过程:数据接收方收到密文后,若相等读取原数据,则需要使用加密密钥及相同的逆算法进行解密,恢复成明文

非对称加密

非对称加密算法(公开密钥加密算法),它需要2个密钥,一个public Key,一个private Key。因为加密和解密使用的是2个不通的密钥,所以这种算法称为非对称加密算法。

  1. 如果公钥对数据进行加密。只有对应的私钥才能进行解密
  2. 如果使用私钥对数据进行加密,只有对应的公钥才能进行解密。

比如A用户生成了一对密钥,然后把公钥公开给B 。B使用公钥加密发送给A。A再使用自己保存的私钥去解密。

常见的签名加密算法

MD5算法

MD5用的是hash函数,它的典型应用是对一段信息摘要,以防止被篡改,严格来说,MD5不是一种加密算法,而是摘要算法,无论多长的输入,MD5都会输出长度为32个字符的一个字符串。

     //采用MD5加密算法
        MessageDigest md = MessageDigest.getInstance("MD5");
        //加密
        byte[] digest = md.digest("123456".getBytes());

SHA1算法

SHA1是和M5一样的消息摘要算法,然而SHA1比MD5的安全性更强。

 //采用MD5加密算法
        MessageDigest md = MessageDigest.getInstance("SHA1");

HMAC算法

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

HMAC在多线程环境下是不安全的。如果需要在多线程访问的时候,进行同步的辅助类,使用ThreadLocal为每个线程缓存一个实例可以避免进行锁操作。

AES/DES/3DES算法

AES\DES\3DES都是对称的块加密算法发,加解密的过程是可逆的,常用的有AES128/AES192/AES256。

DES算法

DES加密算法是一种分组密码,以64位分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。

3DES算法

基于DES的堆成算法,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES加密算法

AES 加密算法是密码学中的高级加密标准,该加密算法采用分组密码体制,密钥长度最少支持位128、192、256,分组长度128位,算法应易于各种硬件和软件实现。AES 本身就是为了取代DES。AES具有更好的安全性,效率和灵活性

RSA算法

RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个同时用于加密和数字签名的算法。它能够抵抗到目前为止已知 的所有密码攻击。

ECC算法

ECC也是一种非对称加密算法,主要优势是在某些情况下,它比其他的方法使用更下的密钥,比如RSA加密算法,提供相当或更高等级的安全级别。不过一个缺点是加密和解密操作的实现比其他机制时间长。(CPU消耗严重)

对称算法

密钥管理:比较难,不适合互联网,一般用于内部系统。
安全性:中
加密速度:快好几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特数据),适合大数据量的加解密处理。

非对称算法

密钥管理:密钥容易管理。
安全性:高
加密速度:比较慢,适合 小数据量加解密或数据签名。

你可能感兴趣的:(常用的加密算法)