Как я могу вычислить хэш SHA-256 строки с секретным ключом в Android?

Мне нужно вычислить хэш SHA-256 строки с секретным ключом. Я нашел этот код:

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(); } 

Для вычисления хеша без секретного ключа. Как я могу рассчитать секретный ключ? Я искал, но не нашел решения на Android. Есть идеи ?

    Посмотрите на этот пример.

     /** * 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); } } 

    Где HASH_ALGORITHM определяется как:

     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(); }