之前在接入语音识别中,发现有道用的SHA256加密算法,讯飞用的HmacSHA256加密算法,都算是对接口的一种访问加密保护,本章来介绍下两种加密算法的写法。
1、SHA256加密
/// <summary>
/// 加密-SHA256
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string SHA256(string str)
{
byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
SHA256Managed Sha256 = new SHA256Managed();
byte[] by = Sha256.ComputeHash(SHA256Data);
return BitConverter.ToString(by).Replace("-", "").ToLower();
}
2、HmacSHA256加密
/// <summary>
/// 加密算法-HmacSHA256
/// </summary>
/// <param name="message"></param>
/// <param name="secret"></param>
/// <returns></returns>
private string HmacSHA256(string message, string secret)
{
secret = secret ?? "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}
}
以上这两种加密方式,在接入语音识别WebAPI中很常见,基本都是以鉴权参数形式出现,不过一般商业项目,对与接口加密没有什么要求,各位同学有兴趣可以研究研究,无论是MD5还是SHA256加密方式,都是接口安全性的表现形式之一。