Java 如何使用android获取摘要?

Java 如何使用android获取摘要?,java,android,security,private-key,sign,Java,Android,Security,Private Key,Sign,我需要签署一个字符串,然后将两者都发送出去。我有一个.pem文件作为私钥,我正在尝试将此文件转换为私钥 这是我的代码: try { File privateKeyFile = new File("path to .pem file"); //TODO: HOW CAN I CONVERT THAT FILE INTO PRIVATE KEY? Signature signature = Signature.getInst

我需要签署一个
字符串
,然后将两者都发送出去。我有一个
.pem
文件作为私钥,我正在尝试将此文件转换为
私钥

这是我的代码:

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();
        }
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);
    }
你对此有什么建议吗?

我这样解决: 取而代之的是使用
.pem
文件,我直接保存了从
PrivateKey
获取的
字符串
,然后当我需要对数据签名时,我得到该
字符串
,并将其转换为
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();
        }
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);
    }