Java에서 DES로 키를 사용하여 일반 텍스트를 암호화/암호 해독해야합니다. 나는 IBM에서 아주 좋은 튜토리얼을 가지고 있는데 이것은 here이다. 이 예제의 문제점은 프로그램 자체에서 키를 생성한다는 것입니다. 이제 문자열 (예 : 암호)을 암호화하고 데이터베이스에 저장하면 키를 알 수 없기 때문에 암호를 해독 할 수 없습니다. 다음은 자동으로 키를 생성하지 않고 DES를 사용하여 Java에서 개인 키 사용
누군가가 내가이 예에서 내 자신의 키를 추가 할 수있는 방법을 제안 할 수 IBMimport java.security.*;
import javax.crypto.*;
//
// encrypt and decrypt using the DES private key algorithm
public class PrivateExample {
public static void main (String[] args) throws Exception {
//
// check args and get plaintext
if (args.length !=1) {
System.err.println("Usage: java PrivateExample text");
System.exit(1);
}
byte[] plainText = args[0].getBytes("UTF8");
//
// get a DES private key
System.out.println("\nStart generating DES key");
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
Key key = keyGen.generateKey();
System.out.println("Finish generating DES key");
//
// get a DES cipher object and print the provider
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
System.out.println("\n" + cipher.getProvider().getInfo());
//
// encrypt using the key and the plaintext
System.out.println("\nStart encryption");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] cipherText = cipher.doFinal(plainText);
System.out.println("Finish encryption: ");
System.out.println(new String(cipherText, "UTF8"));
//
// decrypt the ciphertext using the same key
System.out.println("\nStart decryption");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println("Finish decryption: ");
System.out.println(new String(newPlainText, "UTF8"));
}
}
의 예입니다?
답장을 보내 주셔서 감사합니다.하지만 좀 더 구체적으로 알려주십시오. generateKey는 인수를 취하지 않습니다! – antnewbee
generateKey는 임의 키를 생성합니다. 키 인수를 파싱하는 코드를 추가하는 것보다 해독에 사용할이 키를 저장하는 것이 더 간단 할 수 있습니다. – jacknad
응용 프로그램 전체에서 해당 클래스를 사용하므로 키가 변경 될 서버를 다시 시작할 때마다 문제가 발생하지 않습니다. – antnewbee