Intereting Posts
Панель навигации Android, охватывающая контент для просмотра Как исправить белый экран в приложении Запуск? Как легко переключаться на MTP на устройстве Android 6.0 с поддержкой Debug? Почему некоторые мобильные телефоны xhdpi не отображают изображения, расположенные только в / res / drawable? Что мне нужно знать для порта Cyanogenmod для неподдерживаемых телефонов / планшетов? GetExternalCacheDir () возвращает значение null после очистки данных Скопируйте содержимое холста на другой холст, похожий на приложение amaziograph iphone Оптимизация игры AndEngine Android ProGuard: самые агрессивные оптимизации Как использовать данные сенсора SensorChanged в сочетании с OpenGL Android-чипы для Android Могут ли Honeycomb Loaders решать проблемы с обновлением AsyncTask + UI? Использование AsyncTask для загрузки изображений в ListView Единственное намерение позволить пользователю сделать снимок ИЛИ выбрать изображение из галереи на Android Android: ошибка в launchMode = "singleTask"? -> стек активности не сохранен

Вычислить SHA256 Hash в Android / Java и C #

Я пытаюсь создать хеш SHA256 в android, чтобы затем перейти на веб-службу ASP.NET Web API и сравнить хэш там. Как таковой, мне нужно построить хэш в Android, который, учитывая те же самые входы в ASP.NET, будет генерировать эквивалентный хеш. Я тяну свои волосы, пытаясь понять, что я делаю неправильно.

Вот код Android:

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

ОБНОВЛЕНИЕ: Вот исправленная реализация Android / 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(); } 

Solutions Collecting From Web of "Вычислить SHA256 Hash в Android / Java и C #"