【发布时间】:2020-11-22 02:33:46
【问题描述】:
这是我初始化 MessageDigest 的方式
private static MessageDigest messageDigest;
public static final String SALT_DO_NOT_CHANGE = "somesalt";
static {
try {
messageDigest = MessageDigest.getInstance("SHA-512");
messageDigest.update(SALT_DO_NOT_CHANGE.getBytes());
} catch (NoSuchAlgorithmException e) {
LOGGER.error("error for message digest", e);
throw new RuntimeException("could not initialize message digest");
}
}
这里是如何获取密码字节的摘要,我稍后将其转换为字符串(没有问题)
byte[] bytes = messageDigest.digest(password.getBytes(StandardCharsets.UTF_8));
现在假设密码是“Password@1”。
这是第一次输出(以下为长文道歉)
115,83,48,-2,41,29,-99,71,-54,-53,-26,-67,-118,48,-75,77,13,100,42,70,- 72,110,-85,23,-38,119,-110,-15,121,3,-25,114,-68,109,-108,94,-122,65,-62,10,-90,8,-125,114,-118, 51,-51,89,127,55,37,83,-126,56,-31,-27,-49,-60,25,74,-80,-110,23,45
这是第二次以后的输出。之后还是一样。
-62,-50,45,-44,91,-86,16,90,85,53,101,-122,51,12,-82,52,-123,-101,-10,-28 ,-108,114,120,-96,84,-23,38,-75,78,67,36,-93,-88,-11,79,76,126,-34,-2,109,76,-31,-30, -86,-28,13,-91,-22,-65,-128,108,-47,15,19,95,60,-30,-123,-4,20,-64,21,-1, 7
有人可以帮我理解这里发生了什么吗?
【问题讨论】:
-
当我在我的系统上运行它时,每次运行它都会得到相同的摘要。
-
您通常不应该重复使用
MessageDigest。每次都创建新的。
标签: java arrays sha sha512 message-digest