Começando com Go
Apenas para ter certeza de que estamos na mesma página, aqui está a estrutura de diretórios que criei para meu programa Hello World:
Aqui está o programa que criamos:
pacote principalimportar "fmt"
func main ()
fmt.Printf ("Olá, mundo.\ n ")
Podemos executar o programa acima com o seguinte comando:
vai correr olá.vaiDepois de executar este comando, aqui está a saída que você verá:
Agora isso parece bom. Vamos passar para a nossa agenda principal.
Pacote de criptografia em Golang
Usar criptografia em Golang não é muito fácil de entender. Isso ocorre por causa das construções que fornece e do algoritmo que segue para obter criptografia e descriptografia.
Nesta lição, estudaremos estes pontos:
- Criptografia SHA256
- Como usar bcrypt para criptografar Strings como senhas em seus aplicativos da web
- Usando criptografia e descriptografia AES
Vamos começar fazendo hash e comparando as senhas.
Criptografia SHA256
Começaremos com algo simples. Tentaremos um exemplo muito simples de como realizar uma criptografia SHA256 usando Golang. Vejamos o exemplo:
pacote principalimportar (
"fmt"
"erros"
"cripto / sha256"
"codificação / base64"
)
func main ()
someText: = "shubham"
hash, err: = hashTextTo32Bytes (someText)
fmt.Printf ("% s \ n% s", hash, err)
função hashTextTo32Bytes (hashThis string) (string hash, err error)
se len (hashThis) == 0
retornar "", erros.Novo ("Nenhuma entrada fornecida")
hasher: = sha256.Novo()
hasher.Write ([] byte (hashThis))
stringToSHA256: = base64.URLEncoding.EncodeToString (hasher.Soma (nulo))
// Corte o comprimento para 32 bytes e retorne.
retornar stringToSHA256 [: 32], nulo
Começamos criando um hasher inicialmente. Depois disso, nós o usamos para escrever o hash em uma matriz de bytes. Finalmente, codificamos a String e retornamos os 32 bits de hash.
Quando executarmos este exemplo, obteremos a seguinte saída:
Hashing e senha de correspondência
Agora, vamos finalmente usar bcrypt para produzir senhas Hashed. Manteremos as funções diretas e simples.
Também incluiremos uma função que corresponde à senha com hash para um determinado String. Desta forma, também podemos confirmar se a senha fornecida pelo usuário é a correta. Antes de executar este código, será necessário instalar o pacote golang para bcrypt com o seguinte comando:
# vá buscar "golang.org / x / crypto / bcrypt "Então você pode executar este código:
pacote principalimportar "fmt"
importar "golang.org / x / crypto / bcrypt "
função HashPassword (password string) (string, error)
bytes, err: = bcrypt.GenerateFromPassword ([] byte (senha), 14)
string de retorno (bytes), err
função CheckPasswordHash (password, hash string) bool
errar: = bcrypt.CompareHashAndPassword ([] byte (hash), [] byte (senha))
return err == nil
func main ()
myPwd: = "shubham"
fornecidoHash, _: = HashPassword (myPwd)
fmt.Println ("Senha:", myPwd)
fmt.Println ("Hash:", fornecido Hash)
isMatch: = CheckPasswordHash (myPwd, providedHash)
fmt.Println ("Combinado ?: ", isMatch)
Quando executarmos este exemplo, obteremos a seguinte saída:
Conclusão
Nesta postagem, estudamos exemplos simples, mas úteis sobre como podemos usar o pacote de criptografia para fazer ações muito importantes e úteis em nossos aplicativos.