Xamarin Forms PCL 中带有 HMAC 的 SHA1 键控哈希 [C# 等同于 PHP 中的 hash_hmac]
SHA1 keyed Hash with HMAC in Xamarin Forms PCL [C# equivalent to hash_hmac in PHP]
我正在尝试使用 HMAC 方法为数据消息输入和密钥生成键控哈希值。
C# 中以下 PHP 代码的等效项是什么?
PHP
#!/usr/bin/php
<?php
$data = "WhatIsYourNumber";
$secretKey = "AliceAndBob";
echo hash_hmac('sha1', $data, $secretKey);
?>
结果:
e96af95f120df7b564b3dfecc0e74a870755ad9d
我想在 Xamarin Forms Portable Class 库 (PCL) 中使用它。
首先我找到了使用 System.Security.Cryptography 的解决方案;但我忘记了那个解决方案:
正如@Giorgi 所说,将 PCLCrypto NuGet 包安装到您的 PCL 项目和客户端项目中。
使用此代码:
using System.Text;
using PCLCrypto;
public static string hash_hmacSha1(string data, string key) {
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
var algorithm = WinRTCrypto.MacAlgorithmProvider.OpenAlgorithm(MacAlgorithm.HmacSha1);
CryptographicHash hasher = algorithm.CreateHash(keyBytes);
hasher.Append(dataBytes);
byte[] mac = hasher.GetValueAndReset();
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < mac.Length; i++) {
sBuilder.Append(mac[i].ToString("X2"));
}
return sBuilder.ToString().ToLower();
}
.
string data = "WhatIsYourNumber";
string secretKey = "AliceAndBob";
System.Diagnostics.Debug.WriteLine("{0}", Utils.hash_hmacSha1(data, secretKey));
结果:
e96af95f120df7b564b3dfecc0e74a870755ad9d
来源:
https://github.com/AArnott/PCLCrypto/wiki/Crypto-Recipes
我正在尝试使用 HMAC 方法为数据消息输入和密钥生成键控哈希值。 C# 中以下 PHP 代码的等效项是什么?
PHP
#!/usr/bin/php
<?php
$data = "WhatIsYourNumber";
$secretKey = "AliceAndBob";
echo hash_hmac('sha1', $data, $secretKey);
?>
结果:
e96af95f120df7b564b3dfecc0e74a870755ad9d
我想在 Xamarin Forms Portable Class 库 (PCL) 中使用它。
首先我找到了使用 System.Security.Cryptography 的解决方案;但我忘记了那个解决方案:
正如@Giorgi 所说,将 PCLCrypto NuGet 包安装到您的 PCL 项目和客户端项目中。
使用此代码:
using System.Text;
using PCLCrypto;
public static string hash_hmacSha1(string data, string key) {
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
var algorithm = WinRTCrypto.MacAlgorithmProvider.OpenAlgorithm(MacAlgorithm.HmacSha1);
CryptographicHash hasher = algorithm.CreateHash(keyBytes);
hasher.Append(dataBytes);
byte[] mac = hasher.GetValueAndReset();
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < mac.Length; i++) {
sBuilder.Append(mac[i].ToString("X2"));
}
return sBuilder.ToString().ToLower();
}
.
string data = "WhatIsYourNumber";
string secretKey = "AliceAndBob";
System.Diagnostics.Debug.WriteLine("{0}", Utils.hash_hmacSha1(data, secretKey));
结果:
e96af95f120df7b564b3dfecc0e74a870755ad9d
来源: https://github.com/AArnott/PCLCrypto/wiki/Crypto-Recipes