2013-06-26 5 views
0

문자열을 해싱하는 JAVA 함수를 변환해야합니다. 두 개의 매개 변수가있는 "SHA256"해시

함수입니다 :

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

내 의심의 여지가 있습니다 :

  1. 문자열 값 :이 기능은이 개 매개 변수를
  2. 문자열 키하여 crypt 문자열입니다 : 그것은 또 다른입니다 키

나는 이미 Sha256을 사용했지만, 나는 항상 하나의 매개 변수 (하나의 str 암호화하려면)

제발, 어떻게 C#에서이 함수를 작성하거나 논리적 인 나에게 설명 할 수있는 사람이 있습니까?

+0

hmac은 해시가 아니며 해시 기반 코드 https://en.wikipedia.org/wiki/Hash-based_message_authentication_code입니다. – user1516873

답변

2

당신은 그것을 작동하도록 HMACSHA256 클래스를 사용할 수 있습니다 감사합니다 :

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

이 일반 SHA256 아니라,이 HMACSHA256과 닷넷의 클래스는 allready있다. HMACSHA256

관련 문제