Como posso hash alguma string com sha256
em Java? Alguém conhece alguma biblioteca gratuita para isso?
210
Como posso hash alguma string com sha256
em Java? Alguém conhece alguma biblioteca gratuita para isso?
Respostas:
O SHA-256 não é uma "codificação" - é um hash unidirecional.
Você basicamente converteria a string em bytes (por exemplo, usando
text.getBytes(StandardCharsets.UTF_8)
) e, em seguida, hash os bytes. Observe que o resultado do hash também seria dados binários arbitrários e, se você quiser representá-lo em uma string, use base64 ou hex ... não tente usar oString(byte[], String)
construtor.por exemplo
fonte
"UTF-8"
literal no Java 7+: uma exceção verificada menos para se preocupar.Eu acho que a solução mais fácil é usar o Apache Common Codec :
fonte
Outra alternativa é o Guava, que possui um conjunto de utilitários Hashing fáceis de usar . Por exemplo, para fazer o hash de uma cadeia usando o SHA256 como uma cadeia hexadecimal, você simplesmente faria:
fonte
Exemplo completo de hash para string como outra string.
fonte
Se você estiver usando o Java 8, poderá codificar o
byte[]
procedimentofonte
fonte
0xff
? Não produz nada, produz?fonte
Rastreei o código do Apache
DigestUtils
esha256
parece retornar aojava.security.MessageDigest
cálculo padrão . O Apache não implementa umasha256
solução independente . Eu estava procurando uma implementação independente para comparar com ajava.security
biblioteca. Apenas para sua informação.fonte
Esta foi a minha abordagem usando o Kotlin:
fonte
[B@188363e
:, não a senha criptografada. Além disso, parece ser diferente cada vez que essa função é chamada.return hash.fold("", { str, it -> str + "%02x".format(it)})
que retorna a senha criptografada e não o próprio objeto.Aqui está uma maneira um pouco mais eficiente de transformar o resumo em uma sequência hexadecimal:
Alguém sabe de uma maneira mais rápida em Java?
fonte
Você pode usar o MessageDigest da seguinte maneira:
fonte
No Java 8
fonte
Em Java, a classe MessageDigest é usada para calcular o valor do hash criptográfico. Esta classe fornece a função de hash criptográfico ( MD5 , SHA-1 e SHA-256 ) para encontrar o valor de hash do texto.
Exemplo de código para usar o algoritmo SHA-256.
fonte
Isto é o que eu tenho sido usado para hash:
Saída: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
fonte
Você pode chamar o método acima com diferentes algoritmos, como abaixo.
Você pode consultar este link para obter a aplicação completa.
fonte