如何读取受密码保护的文件的内容?
How to read contents of a password protected file?
我正在尝试从受密码保护的 PEM 文件中读取数据,以从这些数据中生成 public 和私钥。我有密码,我需要在打开文件时传递该密码。但我在 java 中没有任何选项可以做到这一点。
需要紧急帮助。如果我能得到一个代码示例就更好了。
已编辑:
我当前的代码是 -
public void readPrivateKey(String filePath)
{
File fp = new File(filePath);
FileInputStream fis = new FileInputStream(fp);
DataInputStrean dis = new DataInputStream(fis);
byte [] keyBytes = new byte [(int) fp.length()];
dis.readFully(keyBytes);
dis.close();
String temp = new String(keyBytes);
String privateKeyPem = removeUnnecessaryTags(temp); //this function returns a string after removing String like this "BEGIN......."
byte[] decoded = Base64.decode(privateKeyPem);
ASN1Sequence primitive = (ASN1Sequence) ASN1Sequence.fromByteArray(decoded);
Enumeration <?> e = primitive.getObjects();
BigInteger bigInt = ((DERInteger)e.NextElement()).getValue();
int version = bigInt.intValue();
BigInteger modulus = ((DERInteger)e.NextElement()).getValue();
BigInteger publicExp = ((DERInteger)e.NextElement()).getValue();
//... all the values has been retrieved in this way
}
我相信你正在使用 RSA 密钥对。
不用像这样 Java 也可以做到,
openssl rsa -in MYFILE.pem -pubout > MYFILE.pub
ssh-keygen -f MYFILE.pub -i -m PKCS8
如果在Java中需要这样做,请参考@m0skit0在评论中给出的link
我正在尝试从受密码保护的 PEM 文件中读取数据,以从这些数据中生成 public 和私钥。我有密码,我需要在打开文件时传递该密码。但我在 java 中没有任何选项可以做到这一点。
需要紧急帮助。如果我能得到一个代码示例就更好了。
已编辑:
我当前的代码是 -
public void readPrivateKey(String filePath)
{
File fp = new File(filePath);
FileInputStream fis = new FileInputStream(fp);
DataInputStrean dis = new DataInputStream(fis);
byte [] keyBytes = new byte [(int) fp.length()];
dis.readFully(keyBytes);
dis.close();
String temp = new String(keyBytes);
String privateKeyPem = removeUnnecessaryTags(temp); //this function returns a string after removing String like this "BEGIN......."
byte[] decoded = Base64.decode(privateKeyPem);
ASN1Sequence primitive = (ASN1Sequence) ASN1Sequence.fromByteArray(decoded);
Enumeration <?> e = primitive.getObjects();
BigInteger bigInt = ((DERInteger)e.NextElement()).getValue();
int version = bigInt.intValue();
BigInteger modulus = ((DERInteger)e.NextElement()).getValue();
BigInteger publicExp = ((DERInteger)e.NextElement()).getValue();
//... all the values has been retrieved in this way
}
我相信你正在使用 RSA 密钥对。
不用像这样 Java 也可以做到,
openssl rsa -in MYFILE.pem -pubout > MYFILE.pub
ssh-keygen -f MYFILE.pub -i -m PKCS8
如果在Java中需要这样做,请参考@m0skit0在评论中给出的link