다음은 실제 암호화를 사용하는 간단한 예입니다. 그것은 128 비트 AES입니다. 이것은 상상의 모든 스트레칭으로는 확실히 읽을 수 없습니다.
임의의 키를 생성하므로 매번 실행마다 다릅니다. 어떻게 든 데이터를 교환하는 두 프로그램간에 키를 공유해야합니다.
private static final String ENCRYPTION_ALGORITHM = "AES/ECB/PKCS5Padding";
private static final SecureRandom RANDOM = new SecureRandom();
public static void main(String[] args) throws UnsupportedEncodingException, GeneralSecurityException {
final KeyGenerator keyGen = KeyGenerator.getInstance(ENCRYPTION_ALGORITHM.substring(0, ENCRYPTION_ALGORITHM.indexOf('/')));
keyGen.init(128, RANDOM);
final SecretKey key = keyGen.generateKey();
final String s = "My topsecret string";
System.out.println(s);
final Cipher encryption = getCipher(key, Cipher.ENCRYPT_MODE);
final String enc = DatatypeConverter.printBase64Binary(encryption.doFinal(s.getBytes("UTF-8")));
System.out.println(enc);
final Cipher decryption = getCipher(key, Cipher.DECRYPT_MODE);
final String dec = new String(decryption.doFinal(DatatypeConverter.parseBase64Binary(enc)), "UTF-8");
System.out.println(dec);
}
private static Cipher getCipher(final Key key, final int mode) throws GeneralSecurityException {
final Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
cipher.init(mode, key, RANDOM);
return cipher;
}
출력 :
My topsecret string
ip4La5KUBJGTTYenoE920V5w0VBHwALv4fp3qyLTY9o=
My topsecret string
Base_64는 사람이 읽을 수 있습니까? 음, 당신은 똑똑한 인간들을 알고 있습니다. – jn1kk
암호화 된 메시지를 공개적으로 공유하려면 공유 암호 또는 공개/개인 키 암호화가 필요합니다. 실제로 어떤 위협으로부터 보호해야하는지 자세히 설명해주십시오. 캐주얼 읽기? 더 강한 무엇인가? –
http://stackoverflow.com/questions/8622367/what-are-best-practices-for-using-aes-encryption-in-android?rq=1 – durron597