Започвайки с Go
Само за да сме сигурни, че сме на една и съща страница, ето структурата на директориите, която направих за моята програма Hello World:
Ето програмата, която създадохме:
пакет основенимпортиране "fmt"
func main ()
fmt.Printf ("Здравей, свят.\н")
Можем да стартираме горната програма със следната команда:
иди тичай здравей.отивамСлед като изпълним тази команда, ето резултата, който ще видите:
Сега това изглежда добре. Нека да преминем към основната ни програма.
Крипто пакет в Golang
Използването на Crypto в Golang не е много лесно за разбиране. Това се дължи на конструкциите, които предоставя, и алгоритъма, който следва, за да се постигне криптиране и декриптиране.
В този урок ще изучим следните точки:
- Шифроване SHA256
- Как да използвам bcrypt за криптиране на низове като пароли във вашите уеб приложения
- Използване на AES криптиране и декриптиране
Нека започнем с хеширане и сравняване на пароли.
Шифроване SHA256
Ще започнем с малко просто. Ще изпробваме много прост пример за това как да извършим SHA256 криптиране с помощта на Golang. Нека разгледаме примера:
пакет основенвнос (
"fmt"
"грешки"
"крипто / sha256"
"кодиране / base64"
)
func main ()
someText: = "shubham"
хеш, грешка: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", хеш, грешка)
func hashTextTo32Bytes (hashThis низ) (хеширан низ, грешка при грешка)
ако len (hashThis) == 0
връщане "", грешки.Ново („Няма предоставен вход“)
хеш: = sha256.Ново ()
хашер.Запис ([] байт (hashThis))
stringToSHA256: = base64.URLEкодиране.EncodeToString (хеш.Сума (нула))
// Намалете дължината до 32 байта и върнете.
връща низToSHA256 [: 32], нула
Започнахме с първоначалното създаване на хеш. След това го използвахме за запис на хеш в байтов масив. Накрая кодираме String-а и връщаме 32-те бита хеш.
Когато стартираме този пример, ще получим следния изход:
Хеширане и съвпадение на парола
Сега най-накрая ще използваме bcrypt за генериране на хеширани пароли. Ще поддържаме функциите директни и прости.
Ще включим и функция, която съответства хешираната парола на даден низ. По този начин можем също да потвърдим дали паролата, предоставена от потребителя, е правилна. Преди да стартирате този код, ще трябва да инсталирате пакета golang за bcrypt със следната команда:
# go get "golang.org / x / crypto / bcrypt "След това можете да изпълните този код:
пакет основенимпортиране "fmt"
внос "golang.org / x / crypto / bcrypt "
func HashPassword (низ за парола) (низ, грешка)
байта, грешка: = bcrypt.GenerateFromPassword ([] байт (парола), 14)
връщащ низ (байтове), грешка
func CheckPasswordHash (парола, хеш низ) bool
грешка: = bcrypt.CompareHashAndPassword ([] байт (хеш), [] байт (парола))
върнете грешка == нула
func main ()
myPwd: = "shubham"
providedHash, _: = HashPassword (myPwd)
fmt.Println ("Парола:", myPwd)
fmt.Println ("Hash:", при условиеHash)
isMatch: = CheckPasswordHash (myPwd, условиеHash)
fmt.Println ("Съвпадение ?: ", isMatch)
Когато стартираме този пример, ще получим следния изход:
Заключение
В тази публикация изучихме прости, но полезни примери за това как можем да използваме крипто пакет, за да правим действия, много важни и полезни в нашите приложения.