常见的加密算法可以分成三类,对称加密算法,非对称加密算法和散列算法。
对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样
- 指加密和解密使用相同密钥的加密算法。
- 优点在于加解密的高速度和使用长密钥时的难破解性
常见的对称加密算法有:DES、AES 、Base64、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6
- DES加密算法是一种分组密码,加密解密用同一算法
- AES加密算法是密码学中的高级加密标准
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倍。
常见的非对称加密算法有:RSA 、DSA (数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal
RSA :非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
- RSA加密算法是目前最有影响力的公钥加密算 法,并且被普遍认为是目前最优秀的公钥方案之一。
- RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推 荐为公钥数据加密标准。
RSA2 :用于对接支付宝时使用
- 加密性强的散列一定是不可逆的
- 单向散列函数一般用于产生消息摘要,密钥加密等
常见散列加密算法有:MD5 、SHA-1
MD5 :是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
SHA :
- SHA1是和MD5一样流行的消息摘要算法。
- 可以对任意长度的数据运算生成一个160位的数值;