Синхронизация хэша пароля с аргоном с помощью приложения USSD Java и Python Web App
У нас есть система, которая довольно хорошо работает в Интернете. Недавно было решено иметь приложение USSD, так как большинство целевых клиентов используют USSD, разработанный с Java.
Я могу генерировать пароли. Однако из Django пароли начинаются с "argon2", а пароли из Java - нет. Если я вручную добавлю "argon2" к зашифрованному паролю Java, то я смогу войти через Интернет и наоборот.
Тем не менее, я вполне уверен, что чего-то не хватает, и оба могут вести себя одинаково. Ниже приведен фрагмент Java, почти такой же из официального документа:
public static String argon2Hashing(String str) {
// Create instance
Argon2 argon2 = Argon2Factory.create();
// Read password from user
char[] password = str.toCharArray();
try {
// Hash password
String hash = argon2.hash(2, 512, 2, password);
// Verify password
if (argon2.verify(hash, password)) {
return hash;
} else {
return null;
}
} finally {
// Wipe confidential data
argon2.wipeArray(password);
}
}
Теперь для той же строки: бэкэнд Python дает что-то вроде этого:
Argon2$argon2i$v=19$ =512 м, т =2, р =2$TVRWTkVQU3V5TzRx$BYvBZoLiE9p6+zXmp21/ О.А.
в то время как вышеизложенное дает:
$ Argon2i $ v = 19 $ =512 м, т =2, р =2$TVRWTkVQU3V5TzRx$BYvBZoLiE9p6+zXmp21/ О.А.
с той разницей, что приложение USSD не начинается с argon2