Я хотел хэширования текст в Java "() _ | \ \} {] [/> <, ~`?.", После хеширования я получил "82101f0ba1cb0fd017e5b670b7475a95c831d016", но" ef89e75ce03a4fd9df7f9283d332d9a7f01fe09f ". Я искал хэши в Google для тестирования, и это было распространено почти на страницах. Я надеюсь, всегда использовать UTF-8 sha1 ява хэширования неправильный результат
public abstract class PasswordHasher {
protected String algorithm;
protected MessageDigest md;
protected PasswordHasher(String algorithm) {
try {
md = MessageDigest.getInstance(algorithm);
} catch (NoSuchAlgorithmException e) {
System.err.println("Operacja nieprzewidziana");
throw new Error();
}
this.algorithm = algorithm;
}
public String getAlgorithm() { return algorithm; }
public String hashText(String text) {
StringBuilder sb = new StringBuilder();
try {
md.update(text.getBytes("UTF8"));
} catch (Exception e) {
System.err.println("Null pointer or UTF8 does not exists");
return null;
}
byte byteData[] = md.digest();
for(byte b : byteData)
sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
return sb.toString();
} }
public class PasswordHasherSHA1 extends PasswordHasher {
public PasswordHasherSHA1() {
super("SHA1");
} }
Notepad ++> NppCrypt (() _ | \} {] [? />. <,~') > 82101f0ba1cb0fd017e5b670b7475a95c831d016 что не так? (Не очень хорошо видно скриншот) – exoddus
было \\ на самом деле, но нужно было перейти на \\\\, чтобы показать \\, thx для справки, кажется, что \ является проблема –
Кажется, вы решили. Как вы можете понять, так как lo Как вы могли, вы не должны сохранять ваши хешируемые данные в строку. Прочитайте данные непосредственно в байт [], а затем вы избежите проблемы с \\ в объектах String. – exoddus