hmacsha1在线加密
① 函数HMAC-SHA1
HMAC
根据RFC 2316(Report of the IAB,April 1998),HMAC(散列消息身份验证码: Hashed Message Authentication Code)以及IPSec被认为是Interact安全的关键性核心协议。它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥/私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运行散列函数。然后运行结果与密钥组合并再次运行散列函数。这个128位的结果被截断成96位,成为MAC.
hmac主要应用在身份验证中,它的使用方法是这样的:
1. 客户端发出登录请求(假设是浏览器的GET请求)
2. 服务器返回一个随机值,并在会话中记录这个随机值
3. 客户端将该随机值作为密钥,用户密码进行hmac运算,然后提交给服务器
4. 服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的hmac运算,然后与用户发送的结果比较,如果结果一致则验证用户合法
在这个过程中,可能遭到安全攻击的是服务器发送的随机值和用户发送的hmac结果,而对于截获了这两个值的黑客而言这两个值是没有意义的,绝无获取用户密码的可能性,随机值的引入使hmac只在当前会话中有效,大大增强了安全性和实用性。大多数的语言都实现了hmac算法,比如php的mhash、python的hmac.py、java的MessageDigest类,在web验证中使用hmac也是可行的,用js进行md5运算的速度也是比较快的。
SHA
安全散列算法SHA(Secure Hash Algorithm)是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1。其对长度不超过264二进制位的消息产生160位的消息摘要输出,按512比特块处理其输入。
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说时对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
HMAC_SHA1
HMAC_SHA1(Hashed Message Authentication Code, Secure Hash Algorithm)是一种安全的基于加密hash函数和共享密钥的消息认证协议。它可以有效地防止数据在传输过程中被截获和篡改,维护了数据的完整性、可靠性和安全性。HMAC_SHA1消息认证机制的成功在于一个加密的hash函数、一个加密的随机密钥和一个安全的密钥交换机制。
HMAC_SHA1 其实还是一种散列算法,只不过是用密钥来求取摘要值的散列算法。
HMAC_SHA1算法在身份验证和数据完整性方面可以得到很好的应用,在目前网络安全也得到较好的实现。
② C#怎样用secrectkey 进行HMACSHA1加密
这种加密方式称为对称加密。也就是加密与解过程相同的。 事实上可以加密任何字符串的。其玄机就是在于byte[] s = Encoding.Default.GetBytes(string); 如果用Encoding.TF8.GetBytes(string)要比使用Default好的多,这样同时也可以加密汉字了! ..
③ webservice接口密钥是什么
1.1.1 验证码加密
接口中的验证码参数,均需要通过DES + BASE64加密,
1.1.2 报文签名
通票平台接入端分配一个cp_code和csecret
,双方均采用如下规则对报文进行签名:
l 第一步:签名源串构造规则:将请求参数按照如下规则组织“a=x&b=y&c=z&……”,每一个参数按参数名的自然数序排列。(按字典序排列)
l 第二步:使用HMAC-SHA1加密算法,将Step1中的到的源串以及实现分配的密钥(csecret )进行加密;
l 第三步:将Step2中得到的加密字串进行Base64编码。
签名密钥(secret):abcdefghijklmnopqrstuvwx
/**
* 返回签名之后的JSON对象
*
* @param json原JSON对象
* @param secret密钥
* @return
* @throws Exception
*/
publicstatic String doSign(JSONObjectjson,String secret) throws Exception {
String baseStr = "";
for (Object key : newTreeSet(json.keySet())) {
baseStr += ("&" + key + "=" + json.get(key));
}
SecretKeySpec key = newSecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);
byte[] bytes = mac.doFinal(baseStr.substring(1).getBytes("UTF-8"));
json.put("signature", new String(Base64.encodeBase64(bytes)));
return json.toString();
}
④ HMAC-SHA1算法 php怎么写
HMAC-SHA1算法 php怎么写
09-1-25</span></p>
</div>
<div class="b bt2"><div class="bt bg1 ft"><img alt="回答" height="16" src="/static/img/ico2.gif" width="16"/>回答</div></div>
<p class="ft bb">我有一个sha1的加密函数,是javascript的
在google code上无意搜到,与PHP的sha1做过对比试验,是100%正确的。
var hexcase=0;
var b64pad="=";
var chrsz=8;
function sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_test()
{
if(sha1("abc")=="")document.getElementById("cipher").style.display="inline";
}
function sha1sumbit()
{
platnost=newDate;
platnost.setTime(platnost.getTime() (86400000*365));
if(document.login.xcipher.checked)
{
document.cookie="js_cipher=1;expires=" platnost.toGMTString();
if(document.login.password.value
⑤ 如何C#使用HMAC-SHA1算法生成oauth
1、HMACSHA1的概念
HMACSHA1 是
从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。此 HMAC
进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。输出的哈希值长度为 160
位,可以转换为指定位数。
上面是微软的标准定义,我看了也没太明白,他的作用一句话来理解:就是确认请求的URL或者参数是否存在被篡改,以QQ
签名为例:发送方(自己)将参数等进行HMAC算法计算,将得到的哈希值(即签名值)与请求的参数一同提交至接收方(QQ端),然后接收方再次将参数等值
进行HMAC算法计算,将得到的哈希值与你传递过来的哈希值进行核对验证,若一样,说明请求正确、验证通过,进行一下步工作,若不一样,将返回错误。
(下面说的够详细了吧,还不理解,留言给我)
2、QQ OAuth 1.0中用到的哈希算法
/// <summary>
/// HMACSHA1算法加密并返回ToBase64String
/// </summary>
/// <param name="strText">签名参数字符串</param>
/// <param name="strKey">密钥参数</param>
/// <returns>返回一个签名值(即哈希值)</returns>
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);
}
⑥ 苹果手机设置里面的访问限制密码忘记了怎么办
忘记访问限制密码的解决办法有两种:
iPhone自带的访问限制功能非常方便,使用它可以对某些应用程序和音乐内容设置进行限制。
设备已越狱需要iTools或者iFile。
分两部分,第一部分针对4.X固件,第二部分针对5.X固件。都可通过对手机数据的操作来改变访问限制密码。
方法一:
1、首先我们对手机进行数据备份
苹果手机访问限制的密码是无法找回的。如果实在无法想起之前设置的密码,那么只好对手机进行恢复系统了,在恢复系统之前要先进行数据备份,否则会导致手机上的通讯录、照片和短信等数据丢失。用数据线将手机和电脑连接起来,在电脑上打开iTunes,然后在页面中找到并单击【立即备份】按钮,直至备份完成。如下图所示。
方法二:
1、4.X系统解决方法:首先打开iTools,在左侧菜单栏找到【文件系统】
2、然后在右侧依次打开var/mobile/library/preference
3、在preference文件夹下找到com.apple.springboard.plist文件。
4、双击打开com.apple.springboard.plist文件,找到SBParentalControlsPIN字样的位置,它下方就是自己的访问限制密码。
拓展资料:
苹果 iPhone 手机的访问限制是用于限制系统的一些应用的,比如可以限制系统自带的应用程序,限制访问的内容,以及隐私等。
如何设置限制访问:
1、先请在主屏上打开“设置”应用,
2、在设置列表中找到“通用”一栏,点击进入。
3、在通用列表中找到“访问限制”一栏,点击进入。
4、进入访问限制界面以后,默认是关闭的,此时里面的所有选项为不可用状态。此时请点击“启用访问限制”按钮,
5、因为要启用访问限制,必须要设置密码。接着系统要求输入4位数字简单密码,输入二次相同密码,
6、启用了访问限制以后,此时里面的选项已经变成可用状态,
7、这里我以把主屏上的 iTunes Store 关闭为例,在访问限制中关闭它,
8、随后返回主屏,原来在第一屏的 iTunes Store 应用图标,此时已经消失不见了。
9、对于访问限制中的其它设置,可以根据自己的需要来进行设置即可。
⑦ 关于HAMACSHA1加密算法的问题
HmacSHA1声明了算法
RAW是个没有作用的名称,在某些密键关系不大的算法能顶用吧。
指定一条密键的内容和算法。
⑧ nodejs里面怎么实现HMAC-SHA1
1)crypto模块
crypto.createHmac('sha1',app_secret).update('待加密字串').digest().toString('base64');//base64
crypto.createHmac('sha1',app_secret).update('待加密字串').digest('hex');//16进制
- 但该模块针对部分数据加密的结果,与其他语言加密的结果会不一致,因此采用第二种方式
varCryptoJS=require('crypto-js');
varstr='orderId=21140600050549799429&orderStatus=TRADE_SUCCESS&payTime=2014-07-2211:43:31';
varkey='REzySUKRCPfyfV/jfgwTA==';
varsign=CryptoJS.HmacSHA1(str,key).toString();
console.log(sign);
2)crypto-js
⑨ openssl中有没有HMAC-SHA1,CBC-MAC算法
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);
}
/
⑩ 求网页端的JavaScript的HMAC-SHA1加密算法。最近遇到了需要一些加密算法的地方,然而
题主可以考虑使用 CryptoJS 这个库,包含很多种加密方式,而且采用了 RequireJS,既支持 NodeJS 服务端也支持普通浏览器客户端。文档写的也很详实。
GitHub 传送门:https://github.com/brix/crypto-js