Saya ingin membuat hash I love cupcakes
(ditandatangani dengan kunci abcdeg
)
Bagaimana saya bisa membuat hash itu, menggunakan Node.js Crypto?
javascript
node.js
algorithm
hash
node-crypto
pengguna847495
sumber
sumber
crypto.timingSafeEqual(Buffer.from(a), Buffer.from(b))
: stackoverflow.com/questions/31095905/…Beberapa tahun yang lalu dikatakan bahwa
update()
dandigest()
adalah metode warisan dan pendekatan Streaming API baru diperkenalkan. Sekarang dokumen mengatakan bahwa salah satu metode dapat digunakan. Sebagai contoh:Diuji pada simpul v6.2.2 dan v7.7.2
Lihat https://nodejs.org/api/crypto.html#crypto_class_hmac . Memberikan lebih banyak contoh untuk menggunakan pendekatan streaming.
sumber
update
dan bukanwrite
. Saya bingung, praktik mana yang terbaik sekarang? Saya tidak dapat menemukan sumber daya yang mengatakannya sejelas yang Anda sebutkan.digest
danupdate
telah tidak dipakai lagi dan ditampilkan dalam dokumentasi: nodejs.org/api/crypto.html#crypto_class_hmac . Saya sarankan menggunakan API aliran hanya jika Anda membaca dari aliran.Solusi Gwerder tidak akan berfungsi karena
hash = hmac.read();
terjadi sebelum aliran selesai diselesaikan. Demikianlah masalah AngraX. Jugahmac.write
pernyataan adalah un-diperlukan dalam contoh ini.Alih-alih lakukan ini:
Lebih formal, jika Anda mau, garis
dapat ditulis
karena dalam contoh ini teks adalah string utf
sumber
It is a stream that is both readable and writable. The written data is used to compute the hmac. Once the writable side of the stream is ended, use the read() method to get the computed digest.
Anda membacanya ketika ditulis sisi berakhir , Anda tidak perlu bahkan menunggu ketika dibaca sisi menjadi dibaca (meskipun itu pasti tidak). Baca dokumentasi Anda.hmac.end(...)
telah dipanggil, " berakhir " berarti bahwa aliran telah meningkatkan acara selesai , itulah sebabnya perintah menerima panggilan balik. Setelah metode end () dipanggil, aliran membutuhkan waktu untuk menyiram data ke sistem yang mendasarinya. Jika Anda memanggil read () sebelum acara selesai dimunculkan, itu akan gagal. Bagikan kode Gwerder ke JSbin dan lihat sendiri. Anda harus membaca dokumentasi Streams untuk memahami cara kerjanya.read()
ketika sisi yang dapat ditulis berakhir, dan tidak ada apa-apa tentang acara selesai.