我在
PHP和
Android中生成SHA1密钥以验证文件.但是我为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,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和PHP 7以及使用SDK 23编译的Android 5.0上进行了测试.希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。