import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class PasswordApp {
public static void main(String[] args) {
String plaintext = args[0];
try {
// 1.创建MessageDigest对象
MessageDigest md = MessageDigest.getInstance("SHA");
// 2.密码名字符串转化为byte数组
byte[] plaintextBytes = plaintext.getBytes(StandardCharsets.UTF_8);
// 3.使用转化后的byte数组更新消息摘要对象
md.update(plaintextBytes);
// 4.获取加密后的密码密文byte数组
byte[] ciphertextBytes = md.digest();
// 5.获取Base64编码器实例
Base64.Encoder b64Encoder = Base64.getEncoder();
// 6.加密后的密码byte数组做base64编码并转换为字符串
String b64EncoderStr = b64Encoder.encodeToString(ciphertextBytes);
System.out.println(b64EncoderStr);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
MessageDigest类
MessageDigest类为应用提供如SHA-1、SHA-256的消息摘要算法功能,消息摘要是安全的单向哈希函数,可以将任意长度的数据经过哈希处理后输出固定长度的哈希值。
1、首先创建MessageDigest实例md,算法输入“SHA”,默认是sha-1
2、密码明文字符串需要先转化为字节数组
3、密码明文字节数组作为参数调用update方法更新md
4、调用digest()方法对密码做加密
Base64
经过加密后的密码为字节数组,输出是乱码,不易阅读,一般会将字节数组做base64编码存储。
5、获取base64编码器
6、对加密后的密码字节数组做base64编码