내 목표는 AES algorithm
을 사용하여 텍스트 파일 (cipher text
)을 암호화하는 Java 프로그램을 작성하는 것입니다. 그런 다음 암호화 된 파일 (cipher text
)을 해독하여 일반 텍스트를 다시 가져 오는 다른 프로그램을 작성하십시오. 암호화 및 암호 해독 프로세스에 대해 동일한 키 (동일한 키, 한 번 생성, 어딘가에 저장하고 암호화 및 암호 해독 프로그램에서 사용)를 사용하려고합니다. 키를 생성하고 동일한 프로그램에서 한 줄씩 암호화 및 암호 해독을 수행하면 완벽하게 작동합니다. 여기에 대한 작업 코드 스 니펫은 다음과 같습니다.Java에서 비밀 키를 한 번 생성하고 두 개의 다른 프로그램에서이 키를 사용하는 방법
String strDataToEncrypt = new String();
String strCipherText = new String();
String strDecryptedText = new String();
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE,secretKey);
strDataToEncrypt = "any text input";
byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();
byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt);
strCipherText = new BASE64Encoder().encode(byteCipherText);
System.out.println("cipher text: " +strCipherText);
aesCipher.init(Cipher.DECRYPT_MODE,secretKey,aesCipher.getParameters());
byte[] byteDecryptedText = aesCipher.doFinal(new BASE64Decoder().decodeBuffer(strCipherText));
strDecryptedText = new String(byteDecryptedText);
System.out.println("plain text again: " +strDecryptedText);
그러나 암호화 및 암호 해독을 위해 두 가지 다른 프로그램 (java 파일)이 있어야합니다. 그래서, 어떻게 든 키를 생성하고 어딘가에 저장해야합니다. 그런 다음 암호화 및 암호 해독 프로그램에 동일한 키를 사용하십시오. 어떻게해야합니까?
EDIT_1
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] encoded = secretKey.getEncoded();
System.out.println("key: "+encoded);// key: [[email protected]
내가 위 프로그램을 사용하여 인코딩 된 키 값을 얻을 수 있습니다. 하지만 내 질문은 내 암호 해독 프로그램에서이 값을 사용하여 SecretKey를 생성하는 방법입니까?
키를 생성하여 파일에 쓰지 못하게하고 두 번째 프로그램에서 읽지 못하게하는 것은 무엇입니까? –
@JimGarrison 제 편집을보세요. –
키는 시스템이 내부 ID를 기록하는'Object # toString()'을 사용하는'byte []'입니다. 각각의 바이트 _values_를 파일에 써야하는데, 아마도 그것들을 16 진수로 먼저 변환해야 할 것이다. –