2011-12-08 9 views
1

저는 현재 ECDH와 BouncyCastle을 사용하여 Android 용 암호화 앱을 개발하고 있습니다. 지금까지 구현 한 것은 아래 코드에 따라 애플리케이션의 공개 키 및 비공개 키 생성입니다.SMS를 통한 공개 키 보내기

내 다음 작업은 SMS를 통해 공개 키를 보내는 것입니다. 나는 일을 끝내기 위해 어떤 방법을 사용할 수 있는지 알고 싶다. 현재 나는 생성 된 키를 문자열에 할당하여 문자열을 보내고 있지만 여전히 제대로 작동하지 못합니다.

도움이 될 것입니다.

감사합니다. 해피 홀리데이!

try 
    { 
     KeyPairGenerator g = KeyPairGenerator.getInstance("ECDH", "SC"); 

     //Define the Elliptic Curve Field, Points A and B 
     EllipticCurve curve = new EllipticCurve(new ECFieldFp(Presets.CurveQ),Presets.PointA,Presets.PointB); 

     //Define the points on the Elliptic Curve 
     ECParameterSpec ecSpec = new ECParameterSpec(
       curve, 
       ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G 
       new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n 
       1); // h 

     //Generate the random point on the Elliptic Curve 
     g.initialize(ecSpec, new SecureRandom()); 

     //Generate Private Key for User A 
     KeyPair aKeyPair = g.generateKeyPair(); 
     aKeyAgree = KeyAgreement.getInstance("ECDH", "SC"); 
     aKeyAgree.init(aKeyPair.getPrivate()); 

     //Save Personal Keys    
     Presets.myPrivateKey = aKeyPair.getPrivate().getEncoded().toString(); 
     Presets.myPublicKey = aKeyPair.getPublic().getEncoded().toString(); 
+0

특별히 작동하지 않는 것은 무엇입니까? 오류가 있습니까? http://stackoverflow.com/a/4967508/984393을 보셨습니까? – Craigy

답변

1

나는 잘못 관리하고 있었다.

내가

Presets.myPublicKey = aKeyPair.getPublic().getEncoded().toString(); 

에서 얻고 있었다 출력은 내가 기대처럼 SMS를 통해 보낼 수 없습니다 [B1ef9157 @의 라인을 따라 뭔가이었다.

Java: Syntax and meaning behind "[[email protected]"? Binary/Address?

대신 나는 http://iharder.sourceforge.net/current/java/base64/

에서 Base64로 인코더의

byte[] pubEnc = aKeyPair.getPublic().getEncoded(); 
String s = Base64.encodeBytes(pubEnc); 

만들어 사용했고, 지금은 성공적으로 SMS를 통해 문자열을 보낼 수 있어요.

감사 Craigy!

+0

왜 [당신의 대답을 수락 하시겠습니까] (http://meta.stackexchange.com/a/5235)? – martijno