에서 SHA256 해시 계산 안드로이드에서 SHA256 해시를 생성하려고합니다. 그런 다음 ASP.NET 웹 API 웹 서비스에 전달하여 해시를 비교합니다. 따라서 안드로이드에서 해쉬를 생성해야하는데, ASP.NET에서 동일한 입력 값을 사용하면 해시가 생성됩니다. 나는 내가 뭘 잘못하고 있는지 알아 내려고 내 머리카락을 꺼내고있어.안드로이드/자바 및 C#
여기에 안드로이드 코드입니다 :
public String computeHash(String input) throws NoSuchAlgorithmException{
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
try{
digest.update(input.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e){
e.printStackTrace();
}
byte[] byteData = digest.digest(input.getBytes());
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();
}
그리고 여기에 서버 (C#을)의 코드입니다 :
private static string ComputeHash(string input, HashAlgorithm algorithm)
{
Byte[] inputBytes = Encoding.UTF8.GetBytes(input);
Byte[] hashedBytes = algorithm.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashedBytes.Length; i++)
{
sb.Append(String.Format("{0:x2}", hashedBytes[i]));
}
return sb.ToString();
}
UPDATE : 여기 수정 된 안드로이드/Java 구현입니다 (감사합니다 니콜라이 엘렌 코프) :
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();
}
오늘 너희들이 나를 얼마나 구원했는지 믿을 수가 없어. 업데이트를 게시 해 주셔서 감사합니다. –
어떻게 해시 문자열을 자바의 원래 입력으로 변환 할 수 있습니까? 어떤 아이디어 감사 –
crytpographic 해시는 단방향입니다 ... http://en.wikipedia.org/wiki/Cryptographic_hash_function – Kevin