2011-12-29 12 views
6

Za każdym razem, gdy pojawiają się nowe wersje przeglądarek, słyszę o dodawaniu nowych rzeczy, takich jak np. WebGL i inne technologie, o których nikt tak naprawdę nie wie, czy go dogonią.czy istnieje wbudowana funkcja javascript string hash w najnowszych przeglądarkach?

Ale zastanawiam się, czy ktoś kiedykolwiek myślał o takich podstawowych rzeczy w JS jak funkcje mieszania (MD5, SHA1 i tym podobne).

najnowszych przeglądarek Znaczy dzisiejsze wersje rozwojowe zbyt jak Opera 12, Chrome 17 lub Firefox 10.

Patrząc teraz na rozwiązanie znalazłem ten komentarz na innym wątku tutaj: https://stackoverflow.com/questions/7204097/short-hashing-function-for-javascript ( Czy wiesz, że już javascript obiekty są hashtables?). Więc czym są te "hashtables"? Czy to znaczy, że mogę uczynić dowolny ciąg w hasz, ale nie ustalonym takim jak md5 lub sha1, ale niektóre JS budować w specyficznym?

zasadzie to, co muszę zrobić, to:

var txt="Hello world!"; 
var hash = txt.toSha1(); 
+1

Wygląda na to, że mylące tablice mieszające (obiekt, który przechowuje wartości względem nazwanych kluczy, jak '{nazwa:" bob ", dob:" 27/1/1970 "}') z funkcją skrótu (funkcja mapowania duży zestaw danych do małego, np. md5) – Quentin

+0

Tak, teraz rozumiem, że to, czego szukam, nie ma nic wspólnego z tabelami hash. – rsk82

Odpowiedz

0

Paul Johnston wprowadziła następujące algorytmy w javascript

MD5 RIPEMD-160, SHA-1, SHA-256 i SHA-512

można znaleźć kod źródłowy i przykłady tutaj: http://pajhome.org.uk/crypt/md5/

mam nadzieję, że to jest to, czego byliśmy l ooking dla.

+4

Cóż, raczej tak. Ale moje pytanie dotyczyło nowych osiągnięć w przeglądarkach, ciągle wprowadzają nowe funkcje i zastanawiam się, czy wreszcie dodają też hashe. Czy jest to kiedykolwiek planowane, czy też według projektu musi to być, ponieważ coś blokuje ten problem? – rsk82

+0

oh, widzę, że nie wiem o tym w kontekście przeglądarki, ale jeśli korzystasz z [node.js] (http://nodejs.org/), jest już [pakiet kryptograficzny] (http://nodejs.org/docs/latest/api/crypto.html), który obsługuje tego rodzaju rzeczy. –

-7

Kiedy potrzebuję proste mieszanie po stronie klienta bez bibliotek zewnętrznych, używam wbudowanych w przeglądarce funkcji atob() i btoa().

window.btoa() tworzy łańcuch ASCII zakodowany w standardzie 64 z "ciągu znaków" danych binarnych.

function utf8_to_b64(str) { 
    return window.btoa(encodeURIComponent(escape(str))); 
} 

Funkcja window.atob() dekoduje ciąg danych zakodowanych przy użyciu kodowania base-64.

function b64_to_utf8(str) { 
    return unescape(decodeURIComponent(window.atob(str))); 
} 

http://caniuse.com/#search=btoa i http://caniuse.com/#search=atob pokazuje, że jest niezwykle wspierany przez nowoczesne przeglądarki

Przykład pobranych od https://developer.mozilla.org/en-US/docs/Web/API/window.btoa

Uwaga: Powyższe rozwiązanie ma zależność zewnętrznej biblioteki. Jak wspomniano powyżej, używaj tego tylko do prostego szyfrowania. Jeśli szukasz bezpiecznego rozwiązania kryptograficznego, nie korzystaj z tego.

+5

Jest to użyteczne, odwracalne 1: 1 _ kodowanie_, które zamienia zwykły tekst na mniej prosty i _lubniejszy_ wynik niż dane wejściowe. Oba są przeciwieństwami właściwości poszukiwanych tutaj funkcji kryptograficznych jednokierunkowych. – ecmanaut

3

Dla każdego, kto wciąż szuka tych informacji. Jest WebCrypto API który wydaje się być sfinalizowane na początku 2017 r

wykorzystać go w przeglądarce, można go znaleźć w window.crypto.subtle który zawiera metody szyfrowania, płyny itd dokumentacji na temat dostępnych funkcji here.

Powiązane problemy