[英]Alphanumeric hash function in plain Javascript
我正在尋找一種將給定字符串轉換為字母數字哈希的方法。 該代碼將在客戶端執行,並且最多必須完全在原始JS或jQuery中。
但是,是否還存在非加密哈希,即僅一串不需要crypto
和Promises
的字母數字? 我既需要加密哈希,也需要非加密哈希。
第二個哈希可以是一個普通的字母數字字符串,長度為10個字符。 它應該是可恢復的,即應始終為給定的字符串重新創建相同的哈希。 如果第二個哈希值不是異步生成的(即使用Promises
),那會更好。 我打算將其用作window.localStorage
的boolean
的鍵(用於許多不同的字符串)。
最終答案:
現代瀏覽器通過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.