2016-12-19 1 views
5

비밀번호 입력란에 사용자가 추가 한 비밀번호를 암호화하는 방법을 아는 사람이 있습니까?내 비밀번호를 암호화하는 방법 - Android Studio

이 튜토리얼을 시도했지만 작동하지 않았다.

https://gist.github.com/aogilvie/6267013#file-string_encrypt_decrypt-md

나는 누군가가이 문제를 해결할 나 :(

+0

** ** 암호를 암호화하지 마십시오 ** 공격자가 DB를 얻게되면 암호 키도 받게됩니다. 약 100ms 동안 무작위 소금으로 HMAC를 반복하고 소금을 해시로 저장하십시오. 'password_hash' /'password_verify','PBKDF2' (일명'Rfc2898DeriveBytes'),'Bcrypt'와 같은 함수를 사용하십시오. 요점은 공격자가 무차별 적으로 암호를 찾는 데 많은 시간을 소비하게하는 것입니다. – zaph

답변

2
public class AESCrypt 
{ 
    private static final String ALGORITHM = "AES"; 
    private static final String KEY = "1Hbfh667adfDEJ78"; 

    public static String encrypt(String value) throws Exception 
    { 
     Key key = generateKey(); 
     Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM); 
     cipher.init(Cipher.ENCRYPT_MODE, key); 
     byte [] encryptedByteValue = cipher.doFinal(value.getBytes("utf-8")); 
     String encryptedValue64 = Base64.encodeToString(encryptedByteValue, Base64.DEFAULT); 
     return encryptedValue64; 

    } 

    public static String decrypt(String value) throws Exception 
    { 
     Key key = generateKey(); 
     Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM); 
     cipher.init(Cipher.DECRYPT_MODE, key); 
     byte[] decryptedValue64 = Base64.decode(value, Base64.DEFAULT); 
     byte [] decryptedByteValue = cipher.doFinal(decryptedValue64); 
     String decryptedValue = new String(decryptedByteValue,"utf-8"); 
     return decryptedValue; 

    } 

    private static Key generateKey() throws Exception 
    { 
     Key key = new SecretKeySpec(AESCrypt.KEY.getBytes(),AESCrypt.ALGORITHM); 
     return key; 
    } 
} 

사용을 도울 수 있기를 바랍니다.

+0

완벽한 해결책! 그것은 내 문제를 해결 ... 고마워! – Addy1992

+0

모드를 지정하지 않고 암호화 알고리즘 ("AES")을 지정하기 만하면 채우기가 완료되지 않고 해당 기본 설정이 특정 임팩트로 유지됩니다. 세 가지 모두 "AES/CBC/PKCS5Padding"과 같이 제공되어야합니다. 이 대답은 ECB 모드와 PKCS5Padding을 사용하고있는 것 같지만 코드를 읽는 것으로 추측됩니다. – zaph

+0

ECB 모드를 사용하지 마십시오. 안전하지 않습니다. [ECB 모드] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29)에서 펭귄까지 스크롤하십시오. 대신 무작위 IV가있는 CBC 모드를 사용하고 암호화 된 데이터 앞에 IV를 사용하여 암호 해독에 사용하십시오. – zaph

관련 문제