相关疑难解决方法(0)

Android中SHA1哈希实现的问题

我有两个用于计算SHA1的小片段.

一个是非常快但似乎它是不正确的,另一个是非常缓慢但正确的.
我认为FileInputStream转换ByteArrayInputStream是问题所在.

快速版:

MessageDigest md = MessageDigest.getInstance("SHA1");
FileInputStream fis = new FileInputStream("path/to/file.exe");
ByteArrayInputStream byteArrayInputStream =
    new ByteArrayInputStream(fis.toString().getBytes());
DigestInputStream dis = new DigestInputStream(byteArrayInputStream, md);
BufferedInputStream bis = new BufferedInputStream(fis);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

int ch;
while ((ch = dis.read()) != -1) {
    byteArrayOutputStream.write(ch);
}

byte[] newInput = byteArrayOutputStream.toByteArray();
System.out.println("in digest : " +
    byteArray2Hex(dis.getMessageDigest().digest()));

byteArrayOutputStream = new ByteArrayOutputStream();
DigestOutputStream digestOutputStream =
    new DigestOutputStream(byteArrayOutputStream, md);
digestOutputStream.write(newInput);

System.out.println("out digest: " +
    byteArray2Hex(digestOutputStream.getMessageDigest().digest()));
System.out.println("length: " + 
    new String( …
Run Code Online (Sandbox Code Playgroud)

java hash android sha1 stream

6
推荐指数
2
解决办法
5271
查看次数

标签 统计

android ×1

hash ×1

java ×1

sha1 ×1

stream ×1