2011-02-24 70 views
32

我希望能夠根據散列字符串爲用戶創建獨特的令牌*。例如,我知道我可以使用md5()庫,但由於目的不是密碼,我想知道是否有任何我可以使用的「開箱即用」。原生JavaScript中是否有單向哈希函數?原生JavaScript中是否有單向哈希函數可用?

*我意識到這些不會是嚴格獨特的。我相信有很少的哈希碰撞機會。

+1

你可能會喜歡這個問題 - http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript – Anurag 2011-02-24 22:55:45

+0

是的,很多。我需要一個單向散列與GUID。我有一個很大的字符串,並且希望每次都以相同的方式將它散列成更小的字符串。 md5適用於這個目的,但似乎是矯枉過正。 – buley 2011-02-24 23:08:35

回答

11

不是我所知道的。

但是,你總是可以使用JavaScript實現MD5

http://pajhome.org.uk/crypt/md5/

+14

MD5很好。花60秒閱讀並適當使用它。 – 2014-01-11 08:47:57

6

JavaScript沒有本地散列,但有很多庫。

我建議加密JShttps://code.google.com/p/crypto-js/

例如,使用SHA1,你只需:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/sha1.js"></script> 
<script> 
    var hash = CryptoJS.SHA1("Message"); 
</script> 
3

在地平線上,這可能與目前實驗性網絡加密API

https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto

當然,在撰寫本文時,在生產環境中使用並不現實,並且可能會成爲一個移動目標。但是,誰知道過5年?

+0

就我個人而言,我真的想探討如何使用localStorage在站點之間共享代碼(允許使用這個跨域的黑客)。例如,加密簽名可以防止站點屏蔽惡意代碼,例如,保存的jQuery版本。 CDN現在執行此操作,但需要HTTP請求。 – 2016-05-24 17:30:15

相關問題