openssl中有没有HMAC-SHA1,CBC-MAC算法
2个回答
展开全部
1、HMACSHA1概念
HMACSHA1
SHA1 哈希函数构造种键控哈希算用作 HMAC(基于哈希消息验证代码) HMAC
进程密钥与消息数据混合使用哈希函数混合结进行哈希计算所哈希值与该密钥混合再应用哈希函数输哈希值度 160
位转换指定位数
面微软标准定义我看没太明白作用句理解:确认请求URL或者参数否存篡改QQ
签名例:发送(自)参数等进行HMAC算计算哈希值(即签名值)与请求参数同提交至接收(QQ端)接收再参数等值
进行HMAC算计算哈希值与传递哈希值进行核验证若说明请求确、验证通进行步工作若返错误
(面说够详细吧理解留言给我)
2、QQ OAuth 1.0用哈希算
///
/// HMACSHA1算加密并返ToBase64String
///
/// 签名参数字符串
/// 密钥参数
/// 返签名值(即哈希值)
public static string ToBase64hmac(string strText, string strKey)
{
HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.UTF8.GetBytes(strKey));
byte[] byteText = myHMACSHA1.ComputeHash(Encoding.UTF8.GetBytes(strText));
return System.Convert.ToBase64String(byteText);
}
或者写原理:
public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
//HMACSHA1加密
string message;
string key;
message = EncryptText;
key = EncryptKey;
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
HMACSHA1 hmacsha1 = new HMACSHA1(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha1.ComputeHash(messageBytes);
return ByteToString(hashmessage);
}
前面都注释参数含义再说明COPY使用
注明:页面请引用
using System.Security.Cryptography;
3、介绍另外种HMACSHA1算写
public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
//HMACSHA1加密
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(EncryptKey);
byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(EncryptText);
byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
return Convert.ToBase64String(hashBytes);
}
/
HMACSHA1
SHA1 哈希函数构造种键控哈希算用作 HMAC(基于哈希消息验证代码) HMAC
进程密钥与消息数据混合使用哈希函数混合结进行哈希计算所哈希值与该密钥混合再应用哈希函数输哈希值度 160
位转换指定位数
面微软标准定义我看没太明白作用句理解:确认请求URL或者参数否存篡改QQ
签名例:发送(自)参数等进行HMAC算计算哈希值(即签名值)与请求参数同提交至接收(QQ端)接收再参数等值
进行HMAC算计算哈希值与传递哈希值进行核验证若说明请求确、验证通进行步工作若返错误
(面说够详细吧理解留言给我)
2、QQ OAuth 1.0用哈希算
///
/// HMACSHA1算加密并返ToBase64String
///
/// 签名参数字符串
/// 密钥参数
/// 返签名值(即哈希值)
public static string ToBase64hmac(string strText, string strKey)
{
HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.UTF8.GetBytes(strKey));
byte[] byteText = myHMACSHA1.ComputeHash(Encoding.UTF8.GetBytes(strText));
return System.Convert.ToBase64String(byteText);
}
或者写原理:
public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
//HMACSHA1加密
string message;
string key;
message = EncryptText;
key = EncryptKey;
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
HMACSHA1 hmacsha1 = new HMACSHA1(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha1.ComputeHash(messageBytes);
return ByteToString(hashmessage);
}
前面都注释参数含义再说明COPY使用
注明:页面请引用
using System.Security.Cryptography;
3、介绍另外种HMACSHA1算写
public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
//HMACSHA1加密
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(EncryptKey);
byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(EncryptText);
byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
return Convert.ToBase64String(hashBytes);
}
/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询