2012-04-01 2 views
2

ich einen Java-Code verwenden, die ich gefunden, dass ein öffentlichen und einen privaten Schlüssel über die Hüpfburg Bibliothek erzeugt. Mein Problem besteht darin, es in Code zu implementieren, der von meinem Android-Gerät ausgeführt werden kann. Mein Code zeigt nicht die RSA-Tasten an, wie ich sie programmiert habe und durch die meisten meiner Fehlerbehebungen bin ich immer noch nicht in der Lage, meinen Code zu machen, wie ich es frage, obwohl ich keine Fehler erhalte. Mein Verdacht ist, so wie ich alle meine Code in einen Block try/catch setzen, aber ich bin nicht wirklich sicher. Edit: Lower in CodeRSA-Schlüsselpaare, die eine Hüpfburg erzeugen. Etwas herstellt Code runnable von Java-Programm

Dies ist die Java-Klasse, die die RSA öffentlichen und privaten Schlüssel erzeugt. (Es funktioniert)

Dies ist mein Versuch zu versuchen, den Code in einer Android-Anwendung anzuzeigen. Edit: Der Code funktioniert, aber aus irgendeinem Grund stoppt mein Versuch/Fang und erzeugt keinen Code in tv3.

TextView tv1; 
    TextView tv2; 
    TextView tv3; 
    Button convert; 
    String publicKeyFilename = null; 
    String privateKeyFilename = null; 
    String ST = "Ebenezersawesome"; 

    @Override public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Log.d("Ebz", "Made it to onCreate"); 
     tv1 = (TextView) findViewById(R.id.tv1); 
     tv2 = (TextView) findViewById(R.id.tv2); 
     tv3 = (TextView) findViewById(R.id.tv3); 
     convert = (Button) findViewById(R.id.button1); 

     // tv2.setText(ST); 
     convert.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Log.d("Ebz", "Made it to onCreate"); 
       try { 
        byte[] plainText = "ST".getBytes("UTF8"); 
        Log.d("Ebz", "made it to Try Block"); 
        KeyPairGenerator keyGen = KeyPairGenerator 
          .getInstance("RSA"); 
        keyGen.initialize(2048); 
        KeyPair key = keyGen.generateKeyPair(); 
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); 
        tv1.setText(cipher.getProvider().getInfo().toString()); 
        Log.d("Ebz", "Made it passed tv1"); 
        //tv1.setText(ST); 
        cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); 
        byte[] cipherText = cipher.doFinal(plainText); 
        tv2.setText(new String(cipherText, "UTF8").toString()); 
        Log.d("Ebz", "Made it passed tv2"); 
        // tv2.setText(ST); 
        byte[] newPlainText = cipher.doFinal(cipherText); 
        //tv3.setText(new String(newPlainText, "UTF8").toString()); 
        // tv3.setText(ST); 
        Log.d("Ebz", "Made it passed tv3"); 
       } catch (Exception e) { 
        System.out.println("error"); 
       } 
      } 
     }); 
    } 
+2

Vielleicht könnten Sie SpongyCastle auf Android verwenden. Hinweis: 4096 Bit .... Willkommen im Paranoia-Club ;-) – Vincent

+0

@Die Obliviator, viel besser .... Sie sehen, die Leute reagieren bereits + ve'ly – Mayank

+1

Sie sagten, der Code, der RSA-Schlüssel erzeugt, funktioniert, also was geht nicht ??? – Mayank

Antwort

3

Ok try folgenden Code stattdessen Ihre und sehen, was in Ihrem try/catch Block passiert.

TextView tv1; 
TextView tv2; 
TextView tv3; 
Button convert; 
String publicKeyFilename = null; 
String privateKeyFilename = null; 
String ST = "Ebenezersawesome"; 

@Override public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Log.d("Ebz", "Made it to onCreate"); 
    tv1 = (TextView) findViewById(R.id.tv1); 
    tv2 = (TextView) findViewById(R.id.tv2); 
    tv3 = (TextView) findViewById(R.id.tv3); 
    convert = (Button) findViewById(R.id.button1); 

    try { 
       byte[]plainText = "ST".getBytes("UTF8"); 
       Log.d("Ebz", "made it to Try Block"); 
       KeyPairGenerator keyGen = 
        KeyPairGenerator.getInstance("RSA"); 
       keyGen.initialize(4096); 
       KeyPair key = keyGen.generateKeyPair(); 
       Cipher cipher = 
        Cipher.getInstance("RSA/ECB/PKCS1Padding"); 
       tv3.setText(cipher.getProvider().getInfo().toString()); 
       //tv3.setText(ST); 
       cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); 
       byte[]cipherText = cipher.doFinal(plainText); 
       tv1.setText(new String(cipherText, "UTF8").toString()); 
       //tv1.setText(ST); 
       byte[]newPlainText = cipher.doFinal(cipherText); 
       tv2.setText(new String(newPlainText, "UTF8").toString()); 
       //tv2.setText(ST); 
      } catch(Exception e) { 
       System.out.println("error"); 
      } 
    // tv2.setText(ST); 
    convert.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Log.d("Ebz", "Made it to onCreate"); 
     } 
    }); 
} 
+0

Ihre Änderungen an den Code hat funktioniert. Danke. Obwohl mein Code nicht genau das tut, was ich möchte, beantworte ich immer noch meine Frage. Vielen Dank. –

+0

@TheObliviator Verstehst du, was mit deinem Code nicht stimmt oder warum meine Änderungen funktioniert haben? – Mayank

+0

Ja ich verstehe, ich vergleiche sie jetzt –