将十六进制字符串哈希转换为 base64
Convert hex string hash to base64
我有一个明文密码“welcome2022”。
预期的 SHA1 哈希为 wjC4KfO5XfMIRhi45M/VA/0i8NA=
但是,sql 的 SHA1 散列方法正在生成十六进制字符串格式的 SHA1 散列,即 C230B829F3B95DF3084618B8E4CFD503FD22F0D0
。
我打算将上面的十六进制字符串转换为base64编码的哈希值wjC4KfO5XfMIRhi45M/VA/0i8NA=
。
下面是groovy代码供大家参考。
def cleartext = SecurityUtil.decrypt(password) //Decrypts the value of a GuardedString.
def password_bytes = [0, 0, 0, 0, 0] as byte[]
password_bytes = SecurityUtil.charsToBytes(cleartext.toCharArray())
def password2 = SecurityUtil.computeBase64SHA1Hash(password_bytes) //Computes the base 64 encoded SHA1 hash of the input.
然后运行下面的sql查询,
sql.eachRow("SELECT id FROM users WHERE userName = ? AND password =CONCAT('{SHA1}', ?)", [username, password2]) {
....
}
执行此 groovy 脚本时,日志未显示任何错误。
我不确定我写的代码在语法上是否正确。
因此此函数将为您提供给定密码的 base64 编码 SHA-1 哈希值:
def sha64(String password) {
password.digest('SHA-1').decodeHex().encodeBase64()
}
如果你这样做:
println sha64('welcome2022')
它打印
wjC4KfO5XfMIRhi45M/VA/0i8NA=
我有一个明文密码“welcome2022”。
预期的 SHA1 哈希为 wjC4KfO5XfMIRhi45M/VA/0i8NA=
但是,sql 的 SHA1 散列方法正在生成十六进制字符串格式的 SHA1 散列,即 C230B829F3B95DF3084618B8E4CFD503FD22F0D0
。
我打算将上面的十六进制字符串转换为base64编码的哈希值wjC4KfO5XfMIRhi45M/VA/0i8NA=
。
下面是groovy代码供大家参考。
def cleartext = SecurityUtil.decrypt(password) //Decrypts the value of a GuardedString.
def password_bytes = [0, 0, 0, 0, 0] as byte[]
password_bytes = SecurityUtil.charsToBytes(cleartext.toCharArray())
def password2 = SecurityUtil.computeBase64SHA1Hash(password_bytes) //Computes the base 64 encoded SHA1 hash of the input.
然后运行下面的sql查询,
sql.eachRow("SELECT id FROM users WHERE userName = ? AND password =CONCAT('{SHA1}', ?)", [username, password2]) {
....
}
执行此 groovy 脚本时,日志未显示任何错误。
我不确定我写的代码在语法上是否正确。
因此此函数将为您提供给定密码的 base64 编码 SHA-1 哈希值:
def sha64(String password) {
password.digest('SHA-1').decodeHex().encodeBase64()
}
如果你这样做:
println sha64('welcome2022')
它打印
wjC4KfO5XfMIRhi45M/VA/0i8NA=