Encryption

GPG 加密:我是否使用了正確的密鑰?

  • December 23, 2013

我有一個使用 OpenPGP(通過 BouncyCastle)加密銀行文件並將文件 SFTP 到銀行進行財務處理的過程。

他們向我發送了一個公鑰文件,我使用以下命令檢查了該密鑰(結果如下):

C:\Program Files (x86)\GNU\GnuPG>gpg2 --dry-run -vvvv --import \test\thekey.txt

gpg: using character set `CP437'
gpg: armor: BEGIN PGP PUBLIC KEY BLOCK
gpg: armor header: Version: GnuPG v1.2.6 (GNU/Linux)
:public key packet:
       version 4, algo 17, created 1232463981, expires 0
       pkey[0]: [1024 bits]
       pkey[1]: [160 bits]
       pkey[2]: [1024 bits]
       pkey[3]: [1021 bits]
       keyid: C0B18494F5B25CB6
:user ID packet: "FTP Upload Key 3 <XXXX.XXXX@XXXXXXX.com>"
:signature packet: algo 17, keyid C0B18494F5B25CB6
       version 4, created 1232463981, md5len 0, sigclass 0x13
       digest algo 2, begin of digest 23 e8
       hashed subpkt 2 len 4 (sig created 2009-01-20)
       hashed subpkt 27 len 1 (key flags: 03)
       hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
       hashed subpkt 21 len 2 (pref-hash-algos: 2 3)
       hashed subpkt 22 len 2 (pref-zip-algos: 2 1)
       hashed subpkt 30 len 1 (features: 01)
       hashed subpkt 23 len 1 (key server preferences: 80)
       subpkt 16 len 8 (issuer key ID C0B18494F5B25CB6)
       data: [159 bits]
       data: [156 bits]
:public sub key packet:
       version 4, algo 16, created 1232463981, expires 0
       pkey[0]: [1024 bits]
       pkey[1]: [4 bits]
       pkey[2]: [1024 bits]
       keyid: 358DC68F4A83D261
:signature packet: algo 17, keyid C0B18494F5B25CB6
       version 4, created 1232463981, md5len 0, sigclass 0x18
       digest algo 2, begin of digest 28 08
       hashed subpkt 2 len 4 (sig created 2009-01-20)
       hashed subpkt 27 len 1 (key flags: 0C)
       subpkt 16 len 8 (issuer key ID C0B18494F5B25CB6)
       data: [158 bits]
       data: [160 bits]

gpg: pub  1024D/F5B25CB6 2009-01-20  FTP Upload Key 3 <XXXX.XXXX@XXXXXXX.com>
gpg: writing to `C:/Users/jholovacs/AppData/Roaming/gnupg/pubring.gpg'
gpg: using PGP trust model
gpg: key 9166F91E: accepted as trusted key
gpg: key DBA95ED9: accepted as trusted key
gpg: key DF548FCC: accepted as trusted key
gpg: key F5B25CB6: public key "[User ID not found]" imported
gpg: Total number processed: 1
gpg:               imported: 1

我獲取了一個範例文本文件,並使用他們的公鑰對其進行了加密,並使用以下命令檢查了生成的文件(結果如下):

C:\Program Files (x86)\GNU\GnuPG>gpg2 --list-packets <\test\bankfile.pgp
:compressed packet: algo=1
:pubkey enc packet: version 3, algo 16, keyid 358DC68F4A83D261
       data: [1019 bits]
       data: [1024 bits]
:encrypted data packet:
       length: 620
gpg: encrypted with ELG key, ID 4A83D261
gpg: decryption failed: No secret key

事情是這樣的:當我將文件上傳到我們的銀行時,他們說文件與他們的私鑰不匹配。我看到358DC68F4A83D261密鑰 ID 與他們的公鑰匹配,所以我摸不著頭腦……但我也看到 ElGamal 密鑰的 ID4A83D261似乎沒有反映在他們的公鑰文件中。

我正在使用基於BouncyCastle庫的自定義加密解決方案,因此加密中可能存在錯誤(但是,我無法使用我自己的版本複制錯誤Pgp4Win)。也有可能他們這邊有問題。我的問題是,我不確定如何閱讀此回饋以確定問題出在哪裡。一些建議將不勝感激。

好吧,這是正確的密鑰,並且似乎是版本兼容性問題。他們的 OpenPGP 版本不支持 BouncyCastle 的數據壓縮版本。我最終禁用了壓縮,他們的軟體可以解密文件。

引用自:https://serverfault.com/questions/562538