C# Android HMAC 结果
C# Android HMAC result
我在 C# 中使用以下代码进行 HMAC 转换:
string RawData = "data";
string sharedKey = "my-key";
byte[] signature = Encoding.UTF8.GetBytes(RawData);
var KeyByteArray = Encoding.UTF8.GetBytes(sharedKey);
using (HMACSHA256 hmac = new HMACSHA256(KeyByteArray))
{
byte[] signatureBytes =hmac.ComputeHash(signature);
var ContentBase64String =(Convert.ToBase64String(signatureBytes));
Console.WriteLine(ContentBase64String );
Console.ReadKey();
}
以及 Java 中的以下内容:
String RawData="data";
String Key="my-key";
byte[] KeyByteArray=Key.getBytes("UTF-8");
byte[] signature=RawData.getBytes("UTF-8");
Mac sha256_HMAC;
sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(KeyByteArray, "HmacSHA256");
sha256_HMAC.init(secret_key);
String ContentBase64String = Base64.encodeToString(sha256_HMAC.doFinal(signature),Base64.URL_SAFE|Base64.NO_WRAP);
C# 的输出如下:
android 的输出如下:
我已经用了很多天了,但我不知道我做错了什么,因为输出不同,尽管它们应该是一样的。此外,当我删除 - 在关键结果是一样的。我知道我可能会遗漏一些简单的东西,但我认为另一双眼睛可能会看到我的错误。谢谢。
这些答案是相同的(就 HMAC 中包含的字节而言)。对于输出中 +
和 -
字符的差异,您 通过指定 the Base64.URL_SAFE
flag.[=14= 明确告诉它这样做 ]
对于这个问题的未来读者:如有疑问,请查阅文档以了解您不完全理解的所有内容。
我在 C# 中使用以下代码进行 HMAC 转换:
string RawData = "data";
string sharedKey = "my-key";
byte[] signature = Encoding.UTF8.GetBytes(RawData);
var KeyByteArray = Encoding.UTF8.GetBytes(sharedKey);
using (HMACSHA256 hmac = new HMACSHA256(KeyByteArray))
{
byte[] signatureBytes =hmac.ComputeHash(signature);
var ContentBase64String =(Convert.ToBase64String(signatureBytes));
Console.WriteLine(ContentBase64String );
Console.ReadKey();
}
以及 Java 中的以下内容:
String RawData="data";
String Key="my-key";
byte[] KeyByteArray=Key.getBytes("UTF-8");
byte[] signature=RawData.getBytes("UTF-8");
Mac sha256_HMAC;
sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(KeyByteArray, "HmacSHA256");
sha256_HMAC.init(secret_key);
String ContentBase64String = Base64.encodeToString(sha256_HMAC.doFinal(signature),Base64.URL_SAFE|Base64.NO_WRAP);
C# 的输出如下:
android 的输出如下:
我已经用了很多天了,但我不知道我做错了什么,因为输出不同,尽管它们应该是一样的。此外,当我删除 - 在关键结果是一样的。我知道我可能会遗漏一些简单的东西,但我认为另一双眼睛可能会看到我的错误。谢谢。
这些答案是相同的(就 HMAC 中包含的字节而言)。对于输出中 +
和 -
字符的差异,您 通过指定 the Base64.URL_SAFE
flag.[=14= 明确告诉它这样做 ]
对于这个问题的未来读者:如有疑问,请查阅文档以了解您不完全理解的所有内容。