什么是摘要算法?
摘要算法就是哈希算法,将一条任意长度字符串转为32位的哈希值,是单向的,不能解密。常见的摘要算法有MD5和SHA,本文将用java对MD5算法进行实现。
摘要算法的用途?
1.登录密码的加密,如有黑客通过非法手段获取到数据库中的账号密码,如果是明码,那么就会暴露客户的信息,我们就需要对数据进行加密,单向的,不能解密,即使被别人拿到密码,也无法登录。
2.还可以用于验证文件的完整性,唯一表示一个软件应用。
Java API自带的messageDigest
private static String encrypt(String plainText) {
byte[] secretBytes = null;
try {
secretBytes = MessageDigest.getInstance("md5").digest(
plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有这个md5算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
//将得出的字符串转为大写
return md5code.toUpperCase();
}
加密算法
加密算法包括对称加密与非对称加密,其中对称加密算法又叫做共享密钥加密算法,非对称加密算法被称为公开密钥加密算法。常见的对称加密算法主要有 DES
、3DES
、AES
等,常见的非对称加密算法主要有 RSA
、DSA
等,散列算法主要有 SHA-1
、MD5
等。
对称加密算法用的密钥是同一个,加密的密钥和解密的密钥是同一个。
非对称加密算法用的密钥是两个不一样的。在非对称加密算法中,用于数字签名时,因为要代表自己的身份,不能让别人知道,所有要用私钥进行签名,接收者用公钥进行解密验证;用于加密时,因为要对文件进行加密,不能让别人知道里面的内容,所以要用公钥进行加密,用私钥才能解密。
原理图
算法的比较
1.对称加密算法
2.非对称加密算法
3.概要算法
对称加密算法:加密速度快,安全系数较低,用于加密大文件。
非对称加密算法:加密速度慢,安全系度高,用于加密小文件。