public static String sha256(final String text) {
return hash(text, SHA256);
}
public static String hash(final String text, final String method) {
String hashString = null;
try {
final byte[] bytes = text.getBytes(ENCODING);
final MessageDigest mesd = MessageDigest.getInstance(method);
mesd.update(bytes, 0, bytes.length);
final byte[] hash = mesd.digest();
hashString = convertToHex(hash);
} catch (Exception e) {
}
return hashString;
}
public static String convertToHex(final byte[] bytes) {
final BigInteger bigInt = new BigInteger(1, bytes);
final String formatString = "%0" + (bytes.length << 1) + "x";
return Util.formatString(formatString, bigInt);
}
public static String formatString(String format, Object... args) {
return String.format(Locale.US, format, args);
}
以下是将Java代码翻译成Go语言的等效代码:
go
Copy code
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"unicode/utf8"
)
func main() {
text := "your_text_here"
result := sha256Hash(text)
fmt.Println(result)
}
func sha256Hash(text string) string {
return hash(text, "sha256")
}
func hash(text, method string) string {
encoding := "UTF-8"
hashString := ""
bytes := []byte(text)
hasher := sha256.New()
_, err := hasher.Write(bytes)
if err != nil {
// Handle error
}
hash := hasher.Sum(nil)
hashString = convertToHex(hash)
return hashString
}
func convertToHex(bytes []byte) string {
hashString := hex.EncodeToString(bytes)
return hashString
}
请注意,Go语言的crypto/sha256包直接提供了SHA-256哈希函数,因此可以直接使用,而无需像在Java中那样使用MessageDigest类。hex.EncodeToString函数用于将字节数组转换为十六进制字符串。此外,请替换"your_text_here"为你要哈希的实际文本。
感谢大神支援,我知道Go里有sha256哈希函数,只是不知道这个函数的结果是不是和上面java的算法一致。
亲,你确定上面那个JAVA的hash算法就是Go里的标准hash算法吗?我看还有位运算什么的。
再就是你给的代码验证过吗?
@Eysa: 感觉像是gpt生成的 😃
@_hong: 你是对的,这个账户所有的回答都是GPT生成的,看着烦向博客园官方投诉了下,官方说没造成影响,不管。
@_hong: 不用感觉,自信点,就是GPT生成的。而且没有掐头去尾,耿直的热心老铁。
public static String sha256(final String text) {
return hash(text, SHA256);
}
注意这个方法哦,这个是最顶层的。SHA256加密,没看懂他写的是什么意思。
– Eysa 11个月前