如何使用带有密钥的SHA-1来散列字符串?

Ahm*_*ali 6 java security hash android sha1

我用来在iPhone上开发应用程序的时候我用两个组合将String转换为SHA1:

  • 数据
  • 键

现在我正在开发一个Android应用程序,我没有任何关于如何使用key计算SHA1的示例.

我非常感谢任何指导或帮助.


[我目前使用的代码]

private void convertStringToSHA1()
{
        String sTimeStamp  = new SimpleDateFormat("MM/dd/yyyy HH:MM:SS").format(new java.util.Date());
        String sStringToHash = String.format("%1$s\n%2$s", "Username",sTimeStamp);

        MessageDigest cript = MessageDigest.getInstance("SHA-1");
        cript.reset();

        cript.update(sStringToHash.getBytes("utf-8"));
        sStringToHash = new BigInteger(1, cript.digest()).toString(16);
}
Run Code Online (Sandbox Code Playgroud)

evi*_*one 5

尝试这样的事情:

private String sha1(String s, String keyString) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {

SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);

byte[] bytes = mac.doFinal(s.getBytes("UTF-8"));

return new String( Base64.encodeBase64(bytes));

}
Run Code Online (Sandbox Code Playgroud)

SecretKeySpec文档。