Açıklama
SHA-1 kripto yöntemi, verilen bir datayı 20 byte'lık hash koduna çevirir. Uzun ya da kısa, düz metin ya da binary fark etmez, algoritma her zaman 20 byte (40-digit hex) üretir.
Ödev
shaFromFile(f) { //File or Blob //use f.arrayBuffer() return "implement this" } shaFromURL(u) { //URL or string //use fetch(u).then ... return "implement this" }
JavaScript içinde bu işlemi yapan metodun adı
SubtleCrypto.digest()
: Input data ArrayBuffer
içinde verilir ve (uzun sürmesi muhtemel olduğu için)
yine ArrayBuffer içeren bir Promise alınır. Basit bir
kelimeyi kodlamak bile karmaşık bir dizi komut gerektirir:
//encode string M, then digest it using SHA-1 subtle.digest('SHA-1', new TextEncoder().encode(M)) .then(x=>[...new Uint8Array(x)].map(toHex).join(''))Son iki satırı Console'da yazınca sonuç şöyle:
ff649c648d066c6e9e50c14a4711200f40702801
Kriptografi anlamında 'SHA-1' güvenli (secure) sayılmıyor. Sadece dosyaların "Yanlışlıkla değişmediğini" gösteren bir sağlama yöntemi olarak Git ve benzeri sistemlerde kullanılıyor.
Algoritmayı OS içinden kullanmak da mümkün. Unix bazlı sistemlerde
shasum
(ya da
sha1sum)
standard yüklü, Windows'da ise
sha1sum.exe gibi bir yazılım gerekebilir.