2016-07-08 66 views
2

Ich muss eine String unterschreiben und beide senden. Ich habe eine .pem Datei als privaten Schlüssel, und ich versuche, diese Datei in eine PrivateKey zu konvertieren.Wie kann ich verdauen mit Android?

Dies ist mein Code:

try { 
      File privateKeyFile = new File("path to .pem file"); 

      //TODO: HOW CAN I CONVERT THAT FILE INTO PRIVATE KEY? 

      Signature signature = Signature.getInstance("SHA1withRSA"); 
      signature.initSign(privateKey); 
      signature.update(data.getBytes()); 

      byte[] sign = signature.sign(); 
     } catch (NoSuchAlgorithmException | SignatureException e) { 
      e.printStackTrace(); 
     } 

Haben Sie Vorschläge mir darüber zu geben?

Antwort

0

ich auf diese Weise gelöst: verwendet stattdessen eine .pem Datei ich die String von PrivateKey erhalten direkt gespeichert und dann, wenn ich Daten müssen sich anmelden, erhalte ich, dass String und wandeln es in PrivateKey.

Dies ist mein Code:

public String signData(final String data, final String privateKeyString) throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, SignatureException { 

     X509EncodedKeySpec keySpec = new X509EncodedKeySpec(privateKeyString.getBytes()); 
     KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
     PrivateKey privateKey = keyFactory.generatePrivate(keySpec); 


     Signature signature = Signature.getInstance("SHA256withRSA"); 
     signature.initSign(privateKey); 
     signature.update(data.getBytes()); 
     byte[] sign = signature.sign(); 
     return new String(sign); 
    }