Node.js maišos eilutė?

Turiu eilutę, kurią norėčiau naudoti. Lengviausias būdas generuoti „node.js“ maišą?

Maišos yra skirtos versijos valdymui, o ne saugumui.

Ačiū.

233
04 мая '11 в 7:47 2011-05-04 07:47 Haris yra nustatytas gegužės 4 d. 11 val. 07:47 2011-05-04 07:47
@ 8 atsakymai

Pažvelkite į crypto.createHash (algoritmą)

 var filename = process.argv[2]; var crypto = require('crypto'); var fs = require('fs'); var md5sum = crypto.createHash('md5'); var s = fs.ReadStream(filename); s.on('data', function(d) { md5sum.update(d); }); s.on('end', function() { var d = md5sum.digest('hex'); console.log(d + ' ' + filename); }); 
166
04 мая '11 в 7:50 2011-05-04 07:50 atsakymas pateikiamas timbooo 04 gegužės 11 d. 7:50 2011-05-04 07:50

Jei norite, kad „md5“ maišelis būtų paprastas eilutė, man tai teko dirbti.

 var crypto = require('crypto'); var name = 'braitsch'; var hash = crypto.createHash('md5').update(name).digest('hex'); console.log(hash); // 9b74c9897bac770ffc029102a200c5de 

Blogas bingas

509
08 авг. atsakymas, kurį pateikė rugpjūčio 08 d. 2012-08-08 20:04 '12 8:04 val. 2012-08-08 20:04

Mazgas Kriptografinio modulio API vis dar yra nestabili.

Nuo 4.0.0 versijos pats Crypto modulis jau yra nestabilus. Iš oficialių dokumentų:

Kripto

Stabilumas: 2 - stabilus

API pasirodė esanti patenkinama. Suderinamumas su ekosistemomis „npm“ yra aukštas prioritetas ir nebus visiškai pažeistas, jei tai būtina.

Taigi turėtų būti laikoma saugia naudoti savo įgyvendinimą be išorinių priklausomybių.

Nuorodos atveju toliau nurodyti moduliai buvo pasiūlyti kaip alternatyvūs sprendimai, kai „Crypto“ modulis vis dar yra nestabilus.


Taip pat galite naudoti vieną iš sha1 arba md5 modulių, kurie abu atlieka darbą.

 $ npm install sha1 

ir tada

 var sha1 = require('sha1'); var hash = sha1("my message"); console.log(hash); // 104ab42f1193c336aa2cf08a2c946d5c6fd0fcdb 

arba

 $ npm install md5 

ir tada

 var md5 = require('md5'); var hash = md5("my message"); console.log(hash); // 8ba6c19dc1def5702ff5acbf2aeea5aa 

(MD5 nėra saugi, bet dažnai naudojasi tokiomis paslaugomis kaip Gravatar.)

Šių modulių API nepasikeis!

66
06 нояб. atsakymas duotas pvorb 06 lapkričio. 2012-11-06 19:00 „12 val. 19.00 val. 2012-11-06 19:00

Paprasta funkcija:

 var crypto = require('crypto'); function sha256(data) { return crypto.createHash("sha256").update(data).digest("base64"); } 

Ir:

 sha256("string"); 
11
14 мая '16 в 16:46 2016-05-14 16:46 atsakymą pateikė Hors Sujet gegužės 16, 16 d., 4:46 2016-05-14 16:46

crypto modulis leidžia tai padaryti labai paprasta.

Sąranka:

 const crypto = require('crypto'); const sha256 = x => crypto.createHash('sha256').update(x, 'utf8').digest('hex'); 

Naudoti:

 sha256('Hello, world. '); 
7
05 апр. atsakymas pateikiamas sdgfsdh 05 balandžio 2017-04-05 16:37 '17, 4:37 pm 2017-04-05 16:37

Čia galite patikrinti visus palaikomus aparatūros pakeitimus, palaikomus node.js. Kai kurie iš jų yra kriptografiniai, o kai kurie - tik kontrolinėms sumoms. Jo skaičiavimas „Hello World“ 1 milijoną kartų kiekvienam algoritmui. Kiekvienam algoritmui gali prireikti maždaug 1–15 sekundžių (išbandyta standartiniame „Google Computing Engine“ su node.js 4.2.2).

 for(var i1=0;i1<crypto.getHashes().length;i1++){ var Algh=crypto.getHashes()[i1]; console.time(Algh); for(var i2=0;i2<1000000;i2++){ crypto.createHash(Algh).update("Hello World").digest("hex"); } console.timeEnd(Algh); } 

Rezultatas:
DSA: 1992ms
DSA-SHA: 1960 ms
DSA-SHA1: 2062ms
DSA-SHA1-senas: 2124ms
RSA-MD4: 1893 m
RSA-MD5: 1982ms
RSA-MDC2: 2797ms
RSA-RIPEMD160: 2101ms
RSA-SHA: 1948 m
RSA-SHA1: 1908ms
RSA-SHA1-2: 2042ms
RSA-SHA224: 2176ms
RSA-SHA256: 2158ms
RSA-SHA384: 2290ms
RSA-SHA512: 2357ms
dsaEncryption: 1936 m
dsaWithSHA: 1910ms
dsaWithSHA1: 1926ms
dss1: 1928ms
ecdsa-with-SHA1: 1880ms
md4: 1833ms
md4WithRSAEncryption: 1925ms
md5: 1863ms
md5WithRSAEncryption: 1923ms
mdc2: 2729ms
mdc2WithRSA: 2890ms
ripemd: 2101ms
ripemd160: 2153ms
ripemd160WithRSA: 2210ms
rmd160: 2146ms
sha: 1929ms
sha1: 1880ms
sha1WithRSAEncryption: 1957ms
sha224: 2121ms
sha224WithRSAEncryption: 2290ms
sha256: 2134ms
sha256WithRSAEncryption: 2190ms
sha384: 2181ms
sha384WithRSAEnkodavimas: 2343ms
sha512: 2371ms
sha512WithRSAEncryption: 2434ms
shaWithRSAEncryption: 1966ms
ssl2-md5: 1853ms
ssl3-md5: 1868ms
ssl3-sha1: 1971ms
sūkurinė vonia: 2578ms

4
10 нояб. atsakymas pateiktas vartotojo3077458 lapkritis 10 2015-11-10 00:51 '15 - 0:51 2015-11-10 00:51

Atsižvelgiant į mintis iš http://www.thoughtcrime.org/blog/the-cryptographic-doom-principle/ (trumpai tariant: FIRST encrypt, THEN authenticate. Po to, FIRST tikrina THEN iššifruoja) Node.js atlikiau šį sprendimą:

 function encrypt(text,password){ var cipher = crypto.createCipher(algorithm,password) var crypted = cipher.update(text,'utf8','hex') crypted += cipher.final('hex'); return crypted; } function decrypt(text,password){ var decipher = crypto.createDecipher(algorithm,password) var dec = decipher.update(text,'hex','utf8') dec += decipher.final('utf8'); return dec; } function hashText(text){ var hash = crypto.createHash('md5').update(text).digest("hex"); //console.log(hash); return hash; } function encryptThenAuthenticate(plainText,pw) { var encryptedText = encrypt(plainText,pw); var hash = hashText(encryptedText); return encryptedText+"$"+hash; } function VerifyThenDecrypt(encryptedAndAuthenticatedText,pw) { var encryptedAndHashArray = encryptedAndAuthenticatedText.split("$"); var encrypted = encryptedAndHashArray[0]; var hash = encryptedAndHashArray[1]; var hash2Compare = hashText(encrypted); if (hash === hash2Compare) { return decrypt(encrypted,pw); } } 

Jis gali būti išbandytas su:

 var doom = encryptThenAuthenticate("The encrypted text",user.cryptoPassword); console.log(VerifyThenDecrypt(doom,user.cryptoPassword)); 

Tikiuosi, kad tai padės: -)

0
18 апр. atsakymą pateikė batomaeus 18 Bal 2016-04-18 12:59 '16 at 12:59 pm 2016-04-18 12:59

Naudoju „blueimp-md5“ , kuris yra „Suderinamas su serverio aplinka, pvz.,„ Node.js “, modulių krautuvais, pvz.,„ RequireJS “,„ Browserify “arba žiniatinklio paketu ir visomis žiniatinklio naršyklėmis.“

Naudokite jį taip:

 var md5 = require("blueimp-md5"); var myHashedString = createHash('GreensterRox'); createHash(myString){ return md5(myString); } 

Jei atvirose vietose praleidžiate pasikartojančias vertes, visada naudinga sūdyti jas taip, kad žmonėms būtų sunku juos atkurti:

 createHash(myString){ var salt = 'HnasBzbxH9'; return md5(myString+salt); } 
0
13 окт. Atsakymą pateikė GreensterRox 13 spalis. 2016-10-13 14:05 '16 at 14:05 pm 2016-10-13 14:05

Žr. Kitus klausimus apie „ etiketes arba „ Užduoti klausimą“