2011-12-29 9 views
6

Ogni volta che viene visualizzata una nuova versione di browser, sento l'aggiunta di nuove cose, come ad esempio webGL e altre tecnologie che nessuno sa davvero se recuperano.c'è qualche funzione hash della stringa javascript incorporata nei nuovi browser?

Ma mi chiedo se qualcuno abbia mai pensato a cose di base in JS come funzioni di hashing (MD5, SHA1 e simili).

per più recente browser intendo versioni di sviluppo di oggi anche come Opera 12, Chrome 17 o Firefox 10.

Guardando ora soluzione che ho trovato questo commento su un altro thread qui: https://stackoverflow.com/questions/7204097/short-hashing-function-for-javascript ( fai a sapere che oggetti JavaScript già sono hashtables?). Quindi, quali sono questi "hashtables"? Significa che posso trasformare qualsiasi stringa in un hash, ma non uno stabilito come md5 o sha1 ma alcuni JS compilano in modo specifico?

fondamentalmente ciò che devo fare è:

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

Sembra che si siano confuse le tabelle hash (un oggetto che memorizza i valori rispetto alle chiavi denominate, come '{nome:" bob ", dob:" 27/1/1970 "}') con una funzione hash (una funzione per la mappatura un grande insieme di dati su uno piccolo, come md5) – Quentin

+0

Sì, ora capisco che ciò che cerco non ha nulla a che fare con le tabelle hash. – rsk82

risposta

0

Paul Johnston ha attuato le seguenti algoritmi JavaScript

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

è possibile trovare il codice sorgente e alcuni esempi qui: http://pajhome.org.uk/crypt/md5/

Spero che questo è ciò che eri l per.

+4

Beh, in un certo senso sì. Ma la mia domanda riguardava i nuovi sviluppi nei browser, hanno messo costantemente nuove funzioni e mi chiedo se finalmente aggiungono anche hash. E 'mai programmato, o per progettazione deve essere perché qualcosa sta bloccando questo problema? – rsk82

+0

oh, capisco, non che io sappia nel contesto del browser ma se stai usando [node.js] (http://nodejs.org/) c'è già un [pacchetto crittografico] (http://nodejs.org/docs/latest/api/crypto.html) che gestisce questo tipo di cose –

-7

Quando ho bisogno di simple hashing lato client senza librerie esterne Uso le funzioni incorporate nei browser atob() e btoa().

window.btoa() crea una stringa ASCII codificata in base 64 da una "stringa" di dati binari.

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

Il window.atob() funzione decodifica una stringa di dati che sono stati codificati utilizzando codifica base-64.

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

http://caniuse.com/#search=btoa e http://caniuse.com/#search=atob dimostra che è enormemente supportato dai browser moderni

esempio tratto dalla https://developer.mozilla.org/en-US/docs/Web/API/window.btoa

Nota: Sopra soluzione ha alcuna dipendenza libreria esterna. Come accennato in precedenza, utilizzare questo solo per la crittografia semplice. Se stai cercando una soluzione crittografica sicura, non usarla.

+5

Questo è un utile _encoding_versibile 1: 1 che trasforma il testo in chiaro in un output meno chiaro e in _larger_ dell'input. Entrambe sono proprietà opposte a quelle delle funzioni hash crittografiche unidirezionali ricercate qui. – ecmanaut

3

Per tutti coloro che cercano ancora queste informazioni. C'è un WebCrypto API, che sembra essere stato messo a punto all'inizio del 2017.

Per utilizzarlo in un browser, è possibile trovare presso window.crypto.subtle che contiene i metodi per la crittografia, ecc digerisce documentazione sulle funzioni disponibili here.

Problemi correlati