[英]PGP signature format reader
在我的項目中,我需要使用相應的公鑰來驗證 PGP 明確簽名的簽名。 雖然我確實設法找到了一個代碼(例如: https : //github.com/cjmalloy/openbitpub/blob/64485d64a699eb6096f01b27d5f7e51dd726602f/src/main/java/com/cjmalloy/obp/server/pgp/Pgp ),它在低級別運行,看起來非常可怕。
我在想,也許存在一些專門的解析器可以使用-----BEGIN PGP PUBLIC KEY BLOCK-----xxx-----END PGP PUBLIC KEY BLOCK-----
和-----BEGIN PGP SIGNED MESSAGE-----xxx-----BEGIN PGP SIGNATURE-----xxx-----END PGP SIGNATURE-----
塊以便我可以以更具聲明性的方式檢查簽名?
我發現相關PEMReader
從類bouncycastle.openssl
包,但沒有PGP相關為止。
我在想,也許存在一些專門的解析器可以使用
-----BEGIN PGP PUBLIC KEY BLOCK-----xxx-----END PGP PUBLIC KEY BLOCK-----
和-----BEGIN PGP SIGNED MESSAGE-----xxx-----BEGIN PGP SIGNATURE-----xxx-----END PGP SIGNATURE-----
塊以便我可以以更具聲明性的方式檢查簽名?
一個解析器根本不夠——您將需要實現許多特定於 OpenPGP 的功能,例如從字符串派生對稱密鑰(用於加密密鑰)、處理不同類型的非對稱加密算法、散列和、不同類型的數據包嵌套, ... -- 至少您不需要實現 OpenPGP CBC 模式,因為您不需要加密(僅簽名)。
OpenPGP 編寫自己的解析器和加密代碼非常復雜,而是依賴現有的庫。 最后,對於 Java,您有兩條可能的道路可以遵循:
我從
PEMReader
包中找到了相關的PEMReader
類,但到目前為止沒有任何與 PGP 相關的類。
您可能查看了錯誤的 BouncyCastle 包。 OpenPGP 不使用 PEM 格式的密鑰(屬於 X.509 標准),所以這個類根本沒有用。
我有時會遇到同樣的情況。
這是通過使用充氣城堡依賴項和使用方法解決的
解密和驗證(輸入流輸入,輸出流輸出,輸入流 publicKeyIn,輸入流密鑰輸入,字符 [] 密碼)
在 PGP 實用程序類中
Java的商業OpenPGP 庫提供了一個方便的 API 來驗證明文簽名。 示例代碼是:
import com.didisoft.pgp.*;
public class VerifyFile {
public static void main(String[] args) throws Exception{
// create an instance of the library
PGPLib pgp = new PGPLib();
// verify and extract the signed content
SignatureCheckResult signatureCheck = pgp.verifyAndExtract("signed.pgp", "sender_public_key.asc", "OUTPUT.txt");
if (signatureCheck == SignatureCheckResult.SignatureVerified) {
System.out.println("The signature is valid.");
} else if (signatureCheck == SignatureCheckResult.SignatureBroken) {
System.out.println("Message corrupted or signature forged");
} else if (signatureCheck == SignatureCheckResult.PublicKeyNotMatching) {
System.out.println("Signature not matching provided public key (the message is from another sender)");
} else {
System.out.println("No signature found in message");
}
}
}
免責聲明:我為滴滴出行工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.