Ao procurar por aqui e também na Internet em geral, encontrei o Castelo Bouncy . Eu quero usar o Bouncy Castle (ou algum outro utilitário disponível gratuitamente) para gerar um SHA-256 Hash de uma String em Java. Olhando a documentação deles, não consigo encontrar bons exemplos do que quero fazer. Alguém aqui pode me ajudar?
java
bouncycastle
sha256
jce
knpwrs
fonte
fonte
digest
o estado interno é reiniciado; portanto, quando você o chama novamente sem atualizar antes, obtém o hash da string vazia.digest
para String novamente?Isso já está implementado nas bibliotecas de tempo de execução.
Em um ambiente JEE6 +, também é possível usar JAXB DataTypeConverter :
fonte
Você não precisa necessariamente da biblioteca BouncyCastle. O código a seguir mostra como fazer isso usando a função Integer.toHexString
Agradecimentos especiais ao user1452273 deste post: Como fazer hash de alguma string com sha256 em Java?
Mantenha o bom trabalho !
fonte
Ao usar hashcodes com qualquer provedor jce, você primeiro tenta obter uma instância do algoritmo, depois atualiza-o com os dados que deseja que sejam hash e, quando terminar, chame digest para obter o valor de hash.
você pode usar o resumo para obter uma versão codificada em base64 ou hexadecimal de acordo com suas necessidades
fonte
digest()
a matriz de bytes de entrada, pulandoupdate()
?String.getBytes()
sem especificar uma codificação. Atualmente, esse código pode fornecer resultados diferentes em plataformas diferentes - o que é um comportamento quebrado para um hash bem definido.Java 8: Base64 disponível:
fonte
Suponho que você esteja usando uma versão relativamente antiga do Java sem SHA-256. Portanto, você deve adicionar o Provedor BouncyCastle aos 'Provedores de Segurança' já fornecidos em sua versão java.
fonte
fonte
return Hex.encodeHexString(digest)
.Usando Java 8
fonte
Isso funcionará com o seguinte pacote "org.bouncycastle.util.encoders.Hex"
Está na jarra do bouncycastle.
fonte