使用Java / Android中的多个值生成SHA 256哈希

时间:2014-05-30 16:17:36

标签: java android hash sha

我有两个对象需要生成SHA 256 Hash。

第一个值是 JSONObject 第二个值是 String 变量。

理想情况下,我需要的是

Hash hash = new Hash(JSONObject,String);

我找不到任何带有两个值的哈希生成方法。

有人可以帮我吗?。

2 个答案:

答案 0 :(得分:1)

SHA 256作为输入在字节数组上工作。您需要将JSONObject和String转换为字节数组,然后在这些字节数组的串联上计算SHA 256哈希值。

答案 1 :(得分:0)

使用键和值生成sha256哈希码的正确方法

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

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