hashing “SHA256” with two parameters

南楼画角 提交于 2019-12-05 10:34:09

问题


I must convert a JAVA function that Hashing a string.

this is a function:

private static String hmacSha256(String value, String key) throws NoSuchAlgorithmException, InvalidKeyException {
byte[] keyBytes = key.getBytes();           
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(value.getBytes());
return String.format("%0" + (rawHmac.length << 1) + "x", new BigInteger(1, rawHmac));
}

My doubt is: this function take 2 parameters:

  1. String value: It is the string to crypt
  2. String Key: It is another key

I already used the Sha256, but I always use it with only one parameter (one string to encrypt)

please, how can I wrote this function in c# or is there anyone who can explain to me the logical?

thank you


回答1:


You can use HMACSHA256 class to make it work:

    private static string ComputeHash(string key, string value)
    {
        var byteKey = Encoding.UTF8.GetBytes(key);
        string hashString;

        using (var hmac = new HMACSHA256(byteKey))
        {
            var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(value));
            hashString = Convert.ToBase64String(hash);
        }

        return hashString;
    }



回答2:


This is not plain SHA256, this is HMACSHA256 and there is allready a class in .Net. HMACSHA256



来源:https://stackoverflow.com/questions/17315528/hashing-sha256-with-two-parameters

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!