Контрольная сумма SHA1 отличается от одного и того же файла как в php, так и в android

Я генерирую ключ SHA1 в PHP и Android для проверки файла. Но у меня разные ключи для PHP и Android.

Android:

try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); byte[] buffer = new byte[65536]; InputStream fis = new FileInputStream(downloadFile.getPath()); int n = 0; while (n != -1) { n = fis.read(buffer); if (n > 0) { digest.update(buffer, 0, n); } } fis.close(); byte[] digestResult = digest.digest(); log("CheckSum : " + byteArray2Hex(digestResult)); } catch (Exception e) { log("Exception : " + e.getLocalizedMessage()); } 

PHP:

 echo ' \nSHA1 File hash of '. $filePath . ': ' . sha1_file($filePath); 

Выход контрольной суммы:

PHP SHA1 CheckSum: e7a91cd4127149a230f3dcb5ae81605615d3e1be Android SHA1 CheckSum: 19bcbd9d18a3880d2375bddb9181d75da3f32da0

Может ли кто-нибудь помочь, как справиться с этим.

Из этого ответа SO: https://stackoverflow.com/a/9855338/3393666 рассмотрим возможность использования этой функции byteArray2Hex:

 final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String byteArray2Hex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for ( int j = 0; j < bytes.length; j++ ) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } 

Я тестировал его на java 1.7 vs PHP 7 и Android 5.0, составленном с помощью SDK 23. Надеюсь, это поможет.

Intereting Posts