1
電子メール添付ファイルは.p7m形式で、.pemファイルには秘密鍵と証明書が含まれています。Java解読電子メール添付ファイル(.p7mファイル)
openssl smime -decrypt -inform DER -in fileToDecrypt.p7m -inkey privateKey.pem -out destinationFile
しかし、JavaではBouncyCastleを使用して、私はそれを解読できませんでした: 使用OpenSSLに私は、このコマンドでファイルを復号化することができます。
PEMReader pemReader = new PEMReader(new InputStreamReader(new FileInputStream(privateKeyName)));
Object obj;
PrivateKey key = null;
X509Certificate cert1 = null;
X509Certificate cert2 = null;
obj = pemReader.readObject();
if (obj instanceof PrivateKey) {
key = (PrivateKey) obj;
System.out.println("Private Key found");
}
obj = pemReader.readObject();
if(obj instanceof X509Certificate){
cert1 = (X509Certificate) obj;
System.out.println("cert found");
}
obj = pemReader.readObject();
if(obj instanceof X509Certificate){
cert2 = (X509Certificate) obj;
System.out.println("cert found");
}
これはアウト出力します:キーの
Private Key Found
cert found
cert found
タイプは次のとおりです。
System.out.println(key.getAlgorithm());
System.out.println(cert1.getSigAlgName());
System.out.println(cert2.getSigAlgName());
RSA
SHA256WithRSAEncryption
SHA256WithRSAEncryption
私はこのように解読しようとした場合 私はこのコードを使用して秘密鍵をお読みください。
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, key);
Path path = Paths.get("fileToDecrypt.p7m");
byte[] data = Files.readAllBytes(path);
byte[] decryptedData = cipher.doFinal(data);
私が取得:
javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes
私はこの二つのファイルがあります。
- fileToDecrypt.p7mを
- privateKey.pem:RSA秘密鍵と2つのX508証明書
そして、私を含みますどこから何を解読するのか、どこから始めるべきかわからない。問題へ
あなたがあなた自身の質問に答えることができます。) –