Definição:
Em Criptografia, SHA é a função de hash criptográfico que toma entrada como 20 Bytes e renderiza o valor de hash em número hexadecimal, 40 dígitos de comprimento aprox.
p>Message Digest Class:
Para calcular o valor de hash criptográfico em Java, é utilizada a MessageDigest Class, sob o pacote java.security.
MessagDigest Class fornece a seguinte função de hash criptográfico para encontrar o valor de hash de um texto, são:
- MD5
- SHA-1
- SHA-256
Estes Algoritmos são inicializados em método estático chamado getInstance(). Após seleccionar o algoritmo, calcula o valor digerido e retorna os resultados em byte array.
É utilizada a classe BigInteger, que converte o byte array resultante na sua representação de grandeza de sinal. Esta representação é convertida em formato hexadecimal para obter a mensagemDigest
Exemplos:
Input : hello worldOutput : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9Input : GeeksForGeeksOutput : 112e476505aab51b05aeb2246c02a11df03e1187e886f7c55d4e9935c290ade
>/p>
>/p>
import
java.math.BigInteger;
import
java.nio.charset.StandardCharsets;
import
java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
class
GFG {
public
static
byte
getSHA(String input)
throws
NoSuchAlgorithmException
{
MessageDigest md = MessageDigest.getInstance(
"SHA-256"
);
return
md.digest(input.getBytes(StandardCharsets.UTF_8));
}
public
static
String toHexString(
byte
hash)
{
BigInteger number =
new
BigInteger(
1
, hash);
StringBuilder hexString =
new
StringBuilder(number.toString(
16
));
while
(hexString.length() <
32
)
{
hexString.insert(
0
,
'0'
);
}
return
hexString.toString();
}
public
static
void
main(String args)
div>
{
try
{
System.out.println(
"HashCode Generated by SHA-256 for:"
);
String s1 =
"GeeksForGeeks"
;
System.out.println(
"\n"
+ s1 +
" : "
+ toHexString(getSHA(s1)));
String s2 =
"hello world"
;
System.out.println(
"\n"
+ s2 +
" : "
+ toHexString(getSHA(s2)));
}
catch
(NoSuchAlgorithmException e) {
System.out.println(
"Exception thrown for incorrect algorithm: "
+ e);
}
}
}
HashCode Generated by SHA-256 for:GeeksForGeeks : 112e476505aab51b05aeb2246c02a11df03e1187e886f7c55d4e9935c290adehello world : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Aplicação:
- Cryptography
- Integridade dos dados