1
我試圖做一個方法編碼到SHA(128,256,512)有或沒有鹽。對無鹽的方法是哈希Java或無鹽
private static String crypt(String chain, String method) {
MessageDigest md;
try {
md = MessageDigest.getInstance(method);
md.update(chain.getBytes("UTF-8"));
byte[] mb = md.digest();
String out = "";
for (int i = 0; i < mb.length; i++) {
byte temp = mb[i];
String s = Integer.toHexString(new Byte(temp));
while (s.length() < 2) {
s = "0" + s;
}
s = s.substring(s.length() - 2);
out += s;
}
return out;
} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
}
return null;
}
其中,該方法可以是
private final static String MD5="MD5";
private final static String SHA_128="SHA-1";
private final static String SHA_256="SHA-256";
private final static String SHA_384="SHA-384";
但希望我也有一種方法隱窩(字符串鏈,字符串鹽,字符串方法)。我試圖改變行:
byte[] mb=md.digest(salt.getBytes("UTF-8");
但它不返回正確的鏈(與PHP的通話hash_hmac(「SHA256」,「通」,「鹽」)相比)。我該如何解決這個問題,或者我可以在哪裏找到一種可選鹽的算法?謝謝