How can I calculate the SHA-256 hash of a string with a secret key in Android?
26,025
Look at this example.
/**
* Encryption of a given text using the provided secretKey
*
* @param text
* @param secretKey
* @return the encoded string
* @throws SignatureException
*/
public static String hashMac(String text, String secretKey)
throws SignatureException {
try {
Key sk = new SecretKeySpec(secretKey.getBytes(), HASH_ALGORITHM);
Mac mac = Mac.getInstance(sk.getAlgorithm());
mac.init(sk);
final byte[] hmac = mac.doFinal(text.getBytes());
return toHexString(hmac);
} catch (NoSuchAlgorithmException e1) {
// throw an exception or pick a different encryption method
throw new SignatureException(
"error building signature, no such algorithm in device "
+ HASH_ALGORITHM);
} catch (InvalidKeyException e) {
throw new SignatureException(
"error building signature, invalid key " + HASH_ALGORITHM);
}
}
Where HASH_ALGORITHM is defined as:
private static final String HASH_ALGORITHM = "HmacSHA256";
public static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 2);
Formatter formatter = new Formatter(sb);
for (byte b : bytes) {
formatter.format("%02x", b);
}
return sb.toString();
}
Author by
Gabrielle
Updated on July 05, 2022Comments
-
Gabrielle almost 2 years
I need to calculate a SHA-256 hash of a string with a secret key. I found this code :
public String computeHash(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest digest = MessageDigest.getInstance("SHA-256"); digest.reset(); byte[] byteData = digest.digest(input.getBytes("UTF-8")); StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); }
for calculating the hash without the secret key. How can I calculate with a secret key? I searched but I didn't find any solution in Android. Any idea ?
-
Gabrielle almost 12 yearsWhich is the method toHexString()?
-
Swift over 10 yearsLet me know : How can I calculate the SHA-1 hash of a String with a Secret key in android ?
-
Zeeshan almost 10 yearshow can i reverse from Hash string to original String ? Any idea thanks
-
Sayo Oladeji over 8 years@ShanXeeshi You're out of luck there. A hash is a one-way digest; it cannot be "reversed" to get the original text. Sorry.
-
user924 over 4 yearsthere is no secret key