什么是加密算法、为什么要使用加密。加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。为什么要加密,保障数据的安全和完整性防止被他人篡改。
1、摘要算法
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。
常用的摘要算法有MD5、SHA1、SHA256 , 加密后分别输出128bit、160bit、256bit。
1.1 MD5
//md5
public void md5(String str) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
String md5 = bytes2Hex(md.digest());
System.out.println(md5);
} catch (NoSuchAlgorithmException e) {
}
}
//转16进制
private static String bytes2Hex(byte[] byteArray) {
String resultValue = "";
String strTemp = null;
for (int i = 0; i < byteArray.length; i++) {
strTemp = (Integer.toHexString(byteArray[i] & 0xFF));
if (strTemp.length() == 1) {
resultValue += "0";
}
resultValue += strTemp;
}
return resultValue;
}
1.2 SHA1
//SHA1摘要
public static void sha1(String str) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(str.getBytes());
String md5 = bytes2Hex(md.digest());
System.out.println(md5);
} catch (NoSuchAlgorithmException e) {
}
}
1.3 SHA256
//SHA256摘要
public static void sha256(String str) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(str.getBytes());
String md5 = bytes2Hex(md.digest());
System.out.println(md5);
} catch (NoSuchAlgorithmException e) {
}
}
摘要算法关键代码、只需要修改 MessageDigest.getInstance(“SHA-256”) 即可实现各种摘要算法
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(str.getBytes());
byte[]bytes = md.digest()
bytes2Hex(bytes);