Bermula dengan Go
Untuk memastikan kami berada di halaman yang sama, berikut adalah struktur direktori yang saya buat untuk program Hello World saya:
Inilah program yang kami buat:
pakej utamaimport "fmt"
func utama ()
fmt.Printf ("Helo, dunia.\ n ")
Kita boleh menjalankan program di atas dengan arahan berikut:
pergi lari hello.pergiSebaik sahaja kami menjalankan perintah ini, berikut adalah output yang akan anda lihat:
Sekarang kelihatan baik. Mari beralih ke agenda utama kami.
Pakej Crypto di Golang
Menggunakan Crypto di Golang tidak begitu mudah difahami. Ini kerana konstruk yang disediakannya dan algoritma yang diikuti untuk mencapai penyulitan dan penyahsulitan.
Dalam pelajaran ini, kita akan mengkaji perkara-perkara berikut:
- Penyulitan SHA256
- Cara menggunakan bcrypt untuk mengenkripsi String seperti kata laluan dalam aplikasi web anda
- Menggunakan penyulitan dan penyahsulitan AES
Mari mulakan dengan Hashing dan membandingkan kata laluan.
Penyulitan SHA256
Kita akan mulakan dengan agak sederhana. Kami akan mencuba contoh yang sangat mudah mengenai cara melakukan penyulitan SHA256 menggunakan Golang. Mari lihat contohnya:
pakej utamamengimport (
"fmt"
"kesilapan"
"crypto / sha256"
"pengekodan / base64"
)
func utama ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", hash, salah)
func hashTextTo32Bytes (hashThis string) (rentetan hash, ralat kesalahan)
jika len (hashThis) == 0
kembali "", kesilapan.Baru ("Tidak ada input yang diberikan")
hasher: = sha256.Baru()
pencuci.Tulis ([] bait (hashThis))
stringToSHA256: = asas64.Pengekodan URLE.EncodeToString (hasher.Jumlah (nihil))
// Potong panjang hingga 32 bait dan kembali.
kembali taliToSHA256 [: 32], nihil
Kami mulakan dengan membuat hasher pada mulanya. Setelah ini, kami menggunakannya untuk menulis hash dalam tatasusunan bait. Akhirnya, kami mengekodkan String dan mengembalikan hash 32 bit.
Apabila kita menjalankan contoh ini, kita akan mendapat output berikut:
Kata Laluan Mencirikan dan Memadankan
Sekarang, kita akhirnya akan menggunakan bcrypt untuk menghasilkan kata laluan Hashed. Kami akan menjaga fungsi secara langsung dan sederhana.
Kami juga akan menyertakan fungsi yang memadankan kata laluan yang dicincang dengan String tertentu. Dengan cara ini, kita juga dapat mengesahkan jika kata laluan yang diberikan oleh pengguna betul. Sebelum menjalankan kod ini, anda perlu memasang pakej golang untuk bcrypt dengan arahan berikut:
# pergi dapatkan "golang.org / x / crypto / bcrypt "Kemudian anda boleh melaksanakan kod ini:
pakej utamaimport "fmt"
import "golang.org / x / crypto / bcrypt "
func HashPassword (rentetan kata laluan) (rentetan, ralat)
bait, err: = bcrypt.JanaFromPassword ([] bait (kata laluan), 14)
rentetan kembali (bait), salah
func CheckPasswordHash (kata laluan, tali hash) bool
err: = bcrypt.BandingkanHashAndPassword ([] bait (hash), [] bait (kata laluan))
kembali err == nihil
func utama ()
myPwd: = "shubham"
disediakanHash, _: = HashPassword (myPwd)
fmt.Println ("Kata Laluan:", myPwd)
fmt.Println ("Hash:", disediakanHash)
isMatch: = CheckPasswordHash (myPwd, disediakanHash)
fmt.Println ("Sesuai ?: ", isMatch)
Apabila kita menjalankan contoh ini, kita akan mendapat output berikut:
Kesimpulannya
Dalam catatan ini, kami mengkaji contoh mudah tetapi berguna mengenai bagaimana kami dapat menggunakan pakej crypto untuk melakukan tindakan yang sangat penting dan berguna dalam aplikasi kami.