這一行干的就是:把用戶輸進來的明文密碼先做一層 MD5 哈希,再把得到的 32 位十六進制字符串存到變量 password
里。
逐段拆開:
-
password.getBytes()
把字符串轉成字節數組,MD5 算法只能對字節/字節數組做運算。 -
DigestUtils.md5DigestAsHex(...)
Spring 提供的工具方法,內部流程:- 拿到 MD5 消息摘要實例
MessageDigest.getInstance("MD5")
- 喂入字節數組并計算 128 bit(16 byte)的摘要
- 把 16 個字節按十六進制展開成 32 個字符,例如
"123456"
→"e10adc3949ba59abbe56e057f20f883e"
- 拿到 MD5 消息摘要實例
-
結果再賦回給
password
從此以后,變量password
里就不再是原始密碼,而是它的 MD5 值。
為什么要這樣做(場景):
- 數據庫里不存明文,只存 MD5(或再加鹽),降低泄露后的風險。
- 登錄校驗時把用戶輸入再算一次 MD5,然后跟庫里的比對即可。
注意:
- 單純 MD5 已不夠安全,生產環境建議加鹽或使用 BCrypt、PBKDF2、Argon2 等慢哈希算法;
- 這一行只是“把明文變 MD5”,不涉及鹽值、迭代次數等加強手段。