Skip to content

Latest commit

 

History

History
105 lines (67 loc) · 3.24 KB

算法-基础篇(3)加密算法.md

File metadata and controls

105 lines (67 loc) · 3.24 KB

常见的加密算法可以分成三类,对称加密算法,非对称加密算法和散列算法

对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样

对称加密算法

  • 指加密和解密使用相同密钥的加密算法。
  • 优点在于加解密的高速度和使用长密钥时的难破解性

常见的对称加密算法有:DES、AESBase64、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6

DES加密算法

  • DES加密算法是一种分组密码,加密解密用同一算法

AES加密算法

  • AES加密算法是密码学中的高级加密标准

Base64加密算法

Base64是网络上最常见的用于传输8Bit字节代码字节代码)的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.3.2</version>
</dependency>
//对给定的字符串进行base64解码操作
public static String decodeData(String inputData) {
    try {
        if (null == inputData) {
            return null;
        }
        return new String(Base64.decodeBase64(inputData.getBytes("utf-8")), "utf-8");
    } catch (UnsupportedEncodingException e) {
        logger.error(inputData, e);
    }

    return null;
}

//对给定的字符串进行base64加密操作
public static String encodeData(String inputData) {
    try {
        if (null == inputData) {
            return null;
        }
        return new String(Base64.encodeBase64(inputData.getBytes("utf-8")), "utf-8");
    } catch (UnsupportedEncodingException e) {
        logger.error(inputData, e);
    }

    return null;
}

public  static void main(String args[]){
    String encodeStr=Base64Util.encodeData("龙不吟,虎不啸");
    System.out.println("encodeStr="+encodeStr);
    String decodeStr=Base64Util.decodeData(encodeStr);
    System.out.println("decodeStr="+decodeStr);
}

非对称加密算法

  • 指加密和解密使用不同密钥的加密算法,也称为公私钥加密
  • 缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。

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

RSA :非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

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

RSA2 :用于对接支付宝时使用

散列算法

  • 加密性强的散列一定是不可逆的
  • 单向散列函数一般用于产生消息摘要,密钥加密等

常见散列加密算法有:MD5 、SHA-1

MD5 :是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。

SHA

  • SHA1是和MD5一样流行的消息摘要算法。
  • 可以对任意长度的数据运算生成一个160位的数值;