簡體   English   中英

普通Javascript中的字母數字哈希函數

[英]Alphanumeric hash function in plain Javascript

我正在尋找一種將給定字符串轉換為字母數字哈希的方法。 該代碼將在客戶端執行,並且最多必須完全在原始JS或jQuery中。

但是,是否還存在非加密哈希,即僅一串不需要cryptoPromises的字母數字? 我既需要加密哈希,也需要非加密哈希。

第二個哈希可以是一個普通的字母數字字符串,長度為10個字符。 它應該是可恢復的,即應始終為給定的字符串重新創建相同的哈希。 如果第二個哈希值不是異步生成的(即使用Promises ),那會更好。 我打算將其用作window.localStorageboolean的鍵(用於許多不同的字符串)。

最終答案:

現代瀏覽器通過window.crypto對象提供密碼算法實現。 您可以通過鏈接(在底部)查看“現代”在這種情況下的含義。 如果您對受支持的瀏覽器列表滿意,那么可以實現以下目標:

async function hash(target){
   var buffer = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(target));
   var chars = Array.prototype.map.call(new Uint8Array(buffer), ch => String.fromCharCode(ch)).join('');
   return btoa(chars);
};

它將使用SHA-256對您的字符串(其utf-8編碼的字節)進行哈希處理,然后將結果轉換為base64。

請注意,如果您不需要加密強度高的哈希(沒有弄清目的),那么可能會有更好(更快)的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM