2016-07-08 14 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

私はこの方法で解決: は、代わりに私が直接PrivateKeyから得られStringを保存した.pemファイルを使用して、私は件のデータに署名する必要があるときに、私はStringPrivateKeyに変換することを取得します。

これは私のコードです:

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); 
    } 
関連する問題