我们已尝试使用此库:http://msdn.microsoft.com/en-us/library/system.security.cryptography.hashalgorithm(v=vs.110).aspx
这段代码:
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = SHA1.Create(); // SHA1.Create()
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
public static string GetHashString(string inputString)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in GetHash(inputString))
sb.Append(b.ToString("X2"));
return sb.ToString();
}
但图书馆似乎没有。
答案 0 :(得分:2)
如果PCL中没有某些API,您通常会在构造函数中创建一个接口并将其注入。
在你的例子中,它会是这样的
PCL图书馆项目
public interface IHashService
{
byte[] ComputeHash(byte[] data)
}
特定于平台的项目
public class Sha1HashService : IHashService
{
public ComputeHash(byte[] data)
{
using(var algorithm = SHA1.Create())
{
var result = algorithm.ComputeHash(data);
return result;
}
}
}
最好不要使用静态方法并尽可能使用依赖注入。 您也可能希望您的接口更通用(将字节作为参数)而不是字符串,原因完全相同(依赖于Encoding.UTF8.GetBytes)。