Reference

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.