В некоторых старых версиях Java для шифрования пароля используется пакет jasypt .
Он использует StrongPasswordEncryptor
для шифрования паролей.
Похоже, использовать ниже, со страницы их документа
Алгоритм: SHA-256.
Размер соли: 16 байт.
Итерации: 100000.
Там исходный код показывает
public StrongPasswordEncryptor() {
super();
this.digester = new StandardStringDigester();
this.digester.setAlgorithm("SHA-256");
this.digester.setIterations(100000);
this.digester.setSaltSizeBytes(16);
this.digester.initialize();
}
Теперь, когда мы больше не используем Java, мы хотели бы продолжать делать то же самое шифрование в python, но не уверены, как перенести эту часть кода.
У меня есть соль и пара простых текстовых паролей и зашифрованный пароль для проверки правильности работы порта Python, просто не знаю, какую библиотеку lib и какие функции шифровать. Пробовал hashlib.pbkdf2_hmac
без удачи.
Пример простого текстового пароля: Testing123
Соль: 0DD2E486FAE5B121491CBE78A9B67AF1
Зашифрованный пароль: D1JAI76bwIkEkOIy7IZoLasAFKX0Yy7ujU/M7UBezC7NqxSD3clDyaFB1lz96K98
Вот фрагмент кода Java, который фактически шифрует пароль:
import javax.inject.Inject;
import javax.inject.Named;
import org.jasypt.util.password.StrongPasswordEncryptor;
import com.foobar.users.PasswordEncoder;
public class PasswordEncoderImpl implements PasswordEncoder {
private String salt;
private StrongPasswordEncryptor encryptor;
@Inject
public PasswordEncoderImpl(@Named("appHash") String appHash) {
this.salt = appHash;
encryptor = new StrongPasswordEncryptor();
}
@Override
public String encode(String password) {
return encryptor.encryptPassword(password + salt);
}
@Override
public boolean verifyPassword(String password, String encryptedPassword){
return encryptor.checkPassword(password+salt, encryptedPassword);
}
}