Мне нужно знать, как расшифровать строковое значение в Android с помощью Java, зашифрованное с помощью дайджеста сообщений

#android-studio #encryption #passwords #message-digest

Вопрос:

Мне нужно знать, как расшифровать строковое значение в Android с помощью дайджеста сообщений.

Это КЛАСС SHA

   public class SHA {

    public static byte[] encryptSHA(byte[] data,String shaN) throws Exception{

        MessageDigest sha = MessageDigest.getInstance(shaN);
        sha.update(data);
        return sha.digest();
    }
}
 

Этот метод Вызывается В Основном Классе

 private void EncryptPassword(EditText pass){
    byte[] input = pass.getText().toString().getBytes();
    byte[] output = new byte[0];

    try{
        output = SHA.encryptSHA(input,"SHA-256");
    }catch (Exception e){
        e.printStackTrace();
    }
    BigInteger shaData = new BigInteger(1,output);
    Log.e("Encrypted_Password","" shaData);
    encryptedPass = shaData.toString(16);
}
 

Комментарии:

1. Применение дайджеста сообщений (SHA-256 в вашем примере) — это не шифрование, а хеширование — его нельзя отменить. Другими словами, вы не можете извлечь оригинал из хэшированного значения.

2. Знаете ли вы какой-либо другой способ шифрования и дешифрования строкового значения, такого как пароль

3. Использование AES в режиме GCM является обычным делом, вы можете посмотреть его.

4. Обратите внимание, что совершенно правильно хэшировать (а не шифровать) пароли. Однако для проверки сохраненный хэш не расшифровывается (что невозможно), но ввод, подлежащий проверке, хэшируется, и хэши сравниваются (по соображениям безопасности в сочетании с солью, см., например, Argon2).

5. При хранении пароля, пожалуйста, прочитайте security.stackexchange.com/questions/211/…