내 안드로이드 응용 프로그램에서 해독 할 수있는 기능으로 한 줄의 텍스트를 암호화하고 싶습니다.암호 "PBEWithMD5AndDES"는 "안정적입니까?"
나는 javax.crypto
과 관련한 경험이 없지만이 답변은 Encrypt Password in Configuration Files?이며 비슷한 것을 구현했습니다.
코드 :
public String encrypt(String property) throws GeneralSecurityException, UnsupportedEncodingException {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(new PBEKeySpec(PASSWORD));
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
pbeCipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(SALT, ITERATIONS));
return Base64.encodeToString(pbeCipher.doFinal(property.getBytes("UTF-8")), Base64.DEFAULT);
}
public String decrypt(String property) throws GeneralSecurityException, IOException {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(new PBEKeySpec(PASSWORD));
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
pbeCipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(SALT, ITERATIONS));
return new String(pbeCipher.doFinal(Base64.decode(property, Base64.DEFAULT)), "UTF-8");
}
나는 그것을 테스트하고 그것을 잘 작동합니다. 하지만 나를 괴롭히는 한 가지가 있습니다.이 메서드는 GeneralSecurityException
, UnsupportedEncodingException
및 IOException
을 던질 수 있습니다.
질문 : 텍스트가 성공적으로 암호화되어 있지만, 일부 상황 (즉, 같은 새로운 안드로이드 새로운 VM과 버전 또는 무언가) 후 decrypt
방법은 GeneralSecurityException
또는 IOException
가 발생하고 응용 프로그램이 있음을 해독 할 수 없습니다 경우가있을 수 본문?
은 물론 ... 그것을 가져 와서 그것을 사용할 수 있습니다. 요즘에는 DES와 MD5를 사용해서는 안되는 것을 고려하면 이런 일이 발생할 수 있습니다. 불행히도,이 답변은 실제로 답할 수 없습니다. PBEWithMD5AndDES를 유지하기 위해 Google에서 모든 공급 업체에 대한 요구 사항이 있다고 생각하지 않기 때문입니다. –
어떻게 미래에 어떤 벤더가 무엇을 할 것이라고 확신 할 수 있습니까? –
@ArtjomB. 아하, 알 겠어. 그리고 내가 알고 있듯이, 모든 알고리즘이 미래에 제거 될 수 있기 때문에 암호를 전혀 사용하지 않는 것이 안전하지 않은가? –