天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 1. 介绍
- 2. 代码
- 3. 使用
- 4. 输出
- 5. 总结
加密解密的相关文章参考:
BASE64加密解密
MD5加密
SHA加密解密
RSA加密解密
1. 介绍
SHA Secure Hash Algorithm 安全散列算法
比MD5更为安全的一种加密算法
2. 代码
封装为工具类
ShaUtils.java
package com.libai.utils.encryption_utils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @ClassDescription: SHA Secure Hash Algorithm 安全哈希算法
* 又叫安全散列算法,属于数字签名的密码学工具,
* 与MD5一样可通过碰撞算法破解,但仍然是公认的安全算法,比MD5更安全
* @JdkVersion: 1.8
* @Author: 李白
* @Created: 2024/3/23 10:35
*/
public class ShaUtils {
/**
* 安全散列算法
* @param str 所需加密的字符串
* @return 加密后的字符串
*/
public static String shaEncrypt(String str){
BigInteger bigInteger = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
messageDigest.update(str.getBytes());
bigInteger = new BigInteger(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return bigInteger.toString(32);
}
}
3. 使用
main方法中调用
ShaTest.java
package com.libai.test.encrypt_test;
import com.libai.utils.encryption_utils.ShaUtils;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: 李白
* @Created: 2024/3/23 16:24
*/
public class ShaTest {
public static void main(String[] args) {
String string = "libai123";
String strEncrypted = ShaUtils.shaEncrypt(string);
System.out.println("SHA加密算法处理后的字符串: "+strEncrypted);
}
}
4. 输出
执行,查看结果
5. 总结
SHA与MD5都是从MD4进化而来,两者很像,但SHA比MD5更长(前者比后者长32位)。
相对而言,SHA比MD5更安全,但同样硬件情况下SHA比MD5慢
感谢阅读,祝君暴富!