簡體   English   中英

無法使SHA1在Android Java中正常工作

[英]Can't make SHA1 work correctly in Android java

我正在嘗試對某些字節進行哈希處理,但是我的代碼生成的哈希與使用Linux控制台獲得的哈希不同。

package com.example.javatest;

import java.security.MessageDigest;

public class StartingPoint {
    public static void main(String[] args) throws Exception{
        System.out.println(getSHA1("ABC"));
    }


    public static String getSHA1(String s) throws Exception{ // Generate SHA1 hash
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        md.update(s.getBytes("iso-8859-1"), 0, s.length());
        byte[] sha1Hash = md.digest();
        return convertToHex(sha1Hash);
    }


    public static String convertToHex(byte[] data) { // Convert to a HEX string
        StringBuilder buf = new StringBuilder();
        for (byte b : data) {
            int halfbyte = (b >>> 4) & 0x0F;
            int two_halfs = 0;
            do {
                buf.append((0 <= halfbyte) && (halfbyte <= 9) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10)));
                halfbyte = b & 0x0F;
            } while (two_halfs++ < 1);
        }
        return buf.toString();
    }

}

該代碼產生以下哈希:3c01bdbb26f358bab27f267924aa2c9a03fcfdb8

但是在Linux控制台上執行以下命令時:

$ echo "ABC" | sha1sum

結果是:c95ad0ce54f903e1568facb2b120ca9210f6778f

為什么?

您的echo命令還會輸出換行符,然后將其換行到sha1sum中,因此您需要在不使用換行符的情況下通過管道傳輸sha1sum命令。

me @ vps:〜$ echo -n ABC|sha1sum
3c01bdbb26f358bab27f267924aa2c9a03fcfdb8

-n    do not output the trailing newline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM