Я пишу функцию C# на основе существующего кода GO/Java.
Вот go:
func HmacSha256ToBase64(key string, data string) string {
mac := hmac.New(sha256.New, []byte(key))
_, _ = mac.Write([]byte(data))
encode := mac.Sum(nil)
return base64.StdEncoding.EncodeToString(encode)
}
< /code>
Вот java: < /p>
public static String getHmacSHA256Sign(String data, String secretKey) {
try {
data = data.toLowerCase();
// 创建一个密钥
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
// 初始化Mac对象
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(secretKeySpec);
// 执行HMAC运算
byte[] hmacBytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
// 编码为Base64字符串
String macBase64 = Base64.getEncoder().encodeToString(hmacBytes);
return macBase64;
} catch (Exception e) {
e.printStackTrace();
}
return null;
< /code>
Есть определенные элементы. Я не уверен, что эквивалентно в C#. Если вы сможете помочь мне написать ту же функцию в C#, я бы очень признателен!
Подробнее здесь: https://stackoverflow.com/questions/795 ... to-c-sharp