У меня есть веб-сайт, который подключается к другому внешнему веб-сайту и передает идентификационные номера, страница, над которой я работаю и которая генерирует ссылки, написана на c #, тогда как целевой веб-сайт написан на Java, и у меня возникают некоторые несоответствия
Я пытаюсь использовать тот же подход в C #, что и код в Java, для шифрования идентификаторов, код выглядит так:
public static String shaHash(String input)
throws NoSuchAlgorithmException {
if (input == null) {
return null;
}
MessageDigest sha = MessageDigest.getInstance("SHA");
try {
sha.update(input.getBytes("UTF8"));
BigInteger hash = new BigInteger(1, sha.digest());
return hash.toString(16);
} catch (UnsupportedEncodingException e) {}
return null;
}
А код C # выглядит как
StringBuilder convertedId = new StringBuilder();
var idToByte = Encoding.ASCII.GetBytes(id);
using (SHA1 sha1 = SHA1.Create())
{
var bytes = sha1.ComputeHash(idToByte);
for (int i = 0; i < bytes.Length; i++)
{
convertedId.Append(bytes[i].ToString("x2"));
}
}
return convertedId.ToString();
Но возвращаемые значения отличаются, так как код C # выглядит так, как будто он добавляет дополнительный 0 в начале:
Java: b83caf2f739209c42a8d02df0f6d4794f288703 и C #: 0b83caf2f739209c42a8d02df0f8702 1010282282 2828эта проблема?Я пытался изменить кодировку в коде C # для UTF8, но все еще не работает.
Любые идеи, ребята?
Большое спасибо заранее