Dimulai dengan Go
Untuk memastikan kita berada di halaman yang sama, berikut adalah struktur direktori yang saya buat untuk program Hello World saya:
Berikut adalah program yang kami buat:
paket utamaimpor "fmt"
fungsi utama()
fmt.Printf("Halo dunia.\n")
Kita dapat menjalankan program di atas dengan perintah berikut:
pergi lari halo.PergilahSetelah kami menjalankan perintah ini, berikut adalah output yang akan Anda lihat:
Sekarang itu terlihat bagus. Mari beralih ke agenda utama kita.
Paket Crypto di Golang
Menggunakan Crypto di Golang sangat tidak mudah dimengerti. Ini karena konstruksi yang diberikannya dan algoritme yang diikutinya untuk mencapai enkripsi dan dekripsi.
Dalam pelajaran ini, kita akan mempelajari poin-poin ini:
- Enkripsi SHA256
- Cara menggunakan bcrypt untuk mengenkripsi String seperti kata sandi di aplikasi web Anda
- Menggunakan enkripsi dan dekripsi AES
Mari kita mulai dengan Hashing dan membandingkan kata sandi.
Enkripsi SHA256
Kita akan mulai dengan yang agak sederhana. Kami akan mencoba contoh yang sangat sederhana tentang cara melakukan enkripsi SHA256 menggunakan Golang. Mari kita lihat contohnya:
paket utamaimpor (
"fmt"
"kesalahan"
"kripto/sha256"
"pengkodean/base64"
)
fungsi utama()
someText := "shubham"
hash, err := hashTextTo32Bytes(someText)
fmt.Printf("%s\n %s", hash, err)
func hashTextTo32Bytes(hashThis string) (hash string, err error)
if len(hashThis) == 0
kembali "", kesalahan.Baru("Tidak ada masukan yang diberikan")
hasher := sha256.Baru()
penggiling daging.Tulis([]byte(hashThis))
stringToSHA256 := base64.Pengodean URL.EncodeToString(hasher.Jumlah (nol))
// Potong panjangnya menjadi 32 byte dan kembalikan.
kembalikan stringToSHA256[:32], nihil
Kami mulai dengan membuat hasher pada awalnya. Setelah ini, kami menggunakannya untuk menulis hash dalam array byte. Akhirnya, kami menyandikan String dan mengembalikan 32 bit hash.
Ketika kita menjalankan contoh ini, kita akan mendapatkan output berikut:
Hashing dan Mencocokkan Kata Sandi
Sekarang, kami akhirnya akan menggunakan bcrypt untuk menghasilkan kata sandi Hash. Kami akan menjaga fungsinya tetap langsung dan sederhana.
Kami juga akan menyertakan fungsi yang cocok dengan kata sandi hash ke String yang diberikan. Dengan cara ini, kami juga dapat mengonfirmasi apakah kata sandi yang diberikan oleh pengguna benar. Sebelum menjalankan kode ini perlu menginstal paket golang untuk bcrypt dengan perintah berikut:
# pergi dapatkan "golang.org/x/crypto/bcrypt"Kemudian Anda dapat menjalankan kode ini:
paket utamaimpor "fmt"
impor "golang".org/x/crypto/bcrypt"
func HashPassword(string kata sandi) (string, kesalahan)
byte, err := bcrypt.HasilkanDariKata Sandi([]byte(kata sandi), 14)
kembalikan string(byte), err
func CheckPasswordHash(kata sandi, string hash) bool
salah := bcrypt.BandingkanHashAndPassword([]byte(hash), []byte(password))
kembali err == nihil
fungsi utama()
myPwd := "shubham"
disediakanHash, _ := HashPassword(myPwd)
fmt.Println("Password :", myPwd)
fmt.Println("Hash :", disediakanHash)
isMatch := CheckPasswordHash(myPwd, disediakanHash)
fmt.Println("Cocok ?:", isMatch)
Ketika kita menjalankan contoh ini, kita akan mendapatkan output berikut:
Kesimpulan
Dalam posting ini, kami mempelajari contoh sederhana namun berguna tentang bagaimana kami dapat menggunakan paket crypto untuk melakukan tindakan yang sangat penting dan berguna dalam aplikasi kami.