Есть ли однонаправленные хеширующие функции, доступные в нативном JavaScript? - PullRequest
39 голосов
/ 25 февраля 2011

Я хотел бы иметь возможность создавать уникальные токены * для пользователей на основе хешированной строки. Я знаю, что могу, например, использовать библиотеку md5 (), но поскольку цель не криптографическая, мне было интересно, можно ли что-нибудь использовать «из коробки». Существуют ли однонаправленные функции хеширования в нативном JavaScript?

* Я понимаю, что они не будут строго уникальными. Я в порядке с небольшим шансом столкновения хэширования.

Ответы [ 4 ]

15 голосов
/ 25 февраля 2011

не то, что я знаю.

однако вы всегда можете использовать реализацию MD5

на JavaScript

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

8 голосов
/ 25 ноября 2014

JavaScript не имеет собственного хеширования, но есть много библиотек.

Я рекомендую crypto-js : https://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>
6 голосов
/ 25 февраля 2011

Ничего не доступно в нативном JavaScript. Вы можете использовать что-то вроде Murmurhash . Здесь есть реализация JavaScript: https://github.com/garycourt/murmurhash-js. Я не использовал ее, поэтому не могу ручаться за это.

Обновление: теперь в JavaScript доступно несколько реализаций Murmurhash3. Однако многие из них имеют проблемы с кодированием строк в байты и могут давать другие результаты по сравнению с эталонной реализацией C ++. Вы можете прочитать анализ этого здесь , библиотека murmurhash3j-revisited реализует все три варианта функции и соответствует справочной информации.

4 голосов
/ 24 мая 2016

За горизонтом это может быть возможно с помощью экспериментального API Web Crypto

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

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

Предоставлено, на момент написания этой статьииспользование в производственной среде нереально и, вероятно, станет движущейся целью.Тем не менее, 5 лет, кто знает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...