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