2016-07-08 11 views
2

Мне нужно подписать String и отправить оба. У меня есть файл .pem как закрытый ключ, и я пытаюсь преобразовать этот файл в PrivateKey.Как я могу получить дайджест с помощью андроида?

Это мой код:

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(); 
     } 

У вас есть предложение, чтобы дать мне об этом?

ответ

0

Я решил таким образом: Вместо используется файл .pem я сохранил непосредственно String, полученный от PrivateKey, а затем, когда мне нужно подписать ДАННЫЕ, я понимаю, что String и превратить его в PrivateKey.

Это мой код:

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); 
    }