sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars5 | |
extra_vars6 |
http://java-house.jp/ml/archive/j-h-b/051350.html
주의 사항 : 개인적으로도 검증하지 못한 예제이므로 충분히 검토후에 사용할 것
1. 대상환경
- 웹서버 : AIX WebSpehere어플리케이션서버 4.0
- 클라이언트 : WindowsNT VisualC++6.0
2. Java で暗?化してC++ で復?する方法
·미리보기 | 소스복사·
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.FileInputStream;
- import java.security.KeyFactory;
- import java.security.Key;
- import java.security.Security;
- import java.security.spec.PKCS8EncodedKeySpec;
- import java.security.spec.X509EncodedKeySpec;
- import javax.crypto.Cipher;
- import cryptix.jce.provider.CryptixCrypto;
- /*
- * encrypt stuff with RSA (cryptix)
- *
- * javac -classpath .:cryptix-jce-api.jar:cryptix-jce-provider.jar C.java
- * java -classpath .:cryptix-jce-api.jar:cryptix-jce-provider.jar C
- */
- public class C {
- public static void main(String[] args) throws Exception {
- File f;
- FileInputStream i;
- FileOutputStream o;
- Runtime r = Runtime.getRuntime();
- byte[] plain = "howdy!n".getBytes();
- Security.addProvider(new CryptixCrypto());
- /* generate keys */
- r.exec("openssl genrsa -out pri.pem").waitFor();
- r.exec("openssl rsa -in pri.pem -pubout -outform DER -out pub.der").waitFor();
- r.exec("openssl rsa -in pri.pem -outform DER -out pri-rsa.der").waitFor();
- r.exec("openssl pkcs8 -nocrypt -topk8 -inform DER -in pri-rsa.der -outform DER -out pri.der").waitFor();
- /* read in keys */
- f = new File("pub.der");
- byte[] pub_e = new byte[(int) f.length()];
- i = new FileInputStream(f);
- i.read(pub_e);
- i.close();
- f = new File("pri.der"); //(not used)
- byte[] pri_e = new byte[(int) f.length()];
- i = new FileInputStream(f);
- i.read(pri_e);
- i.close();
- KeyFactory kf = KeyFactory.getInstance("RSA");
- Key pub = kf.generatePublic(new X509EncodedKeySpec(pub_e));
- Key pri = kf.generatePrivate(new PKCS8EncodedKeySpec(pri_e));
- /* encrypt */
- Cipher c = Cipher.getInstance("RSA/ECB/PKCS#1");// provider="CryptixCrypto"
- c.init(Cipher.ENCRYPT_MODE, pub);
- o = new FileOutputStream("secret");
- o.write(c.doFinal(plain));
- o.close();
- /* decrypt */
- r.exec("openssl pkcs8 -inform DER -in pri -nocrypt -out pri.pem -outform PEM").waitFor();
- r.exec("openssl rsautl -inkey pri.pem -in secret -decrypt -out plain").waitFor();
- /* display */
- i = new FileInputStream("plain");
- int d;
- while ((d = i.read()) >= 0) {
- System.out.write(d);
- }
- }
- }