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