簡體   English   中英

將使用GnuPG生成的RSA專用密鑰導入C#

[英]Importing a private RSA key generated with GnuPG into C#

我想在我的C#應用​​程序中簽名某些東西,但是我需要使用以前使用GnuPG生成的私有RSA密鑰簽名,而不是在應用程序本身內部生成一個新密鑰。

我可以使用GnuPG導出RSA密鑰,並得到類似的信息(請注意,我在這里省略了大多數行,僅是示例):

-----BEGIN PGP PRIVATE KEY BLOCK-----
lQOYBFXlhWwBCACfOGAw5Qr5ddFvDFZlDmys18KRV3XawArMiPe4hzivsEB3h+M1
df12Pz3l6IWnUJ/nJt/ZohwCOjm93+zT3xmGcAL9mh/lez6+UoQB8uB0hJ1ltLnZ
8RumvpExXJ2c6LfmaLrwyLHLUSAu8mfV6KoLtD9OxHkIdHktKpBzIPkLG9lRNAmN
kzjI9sz7pLq80+YevPA60niI0SBwbmJTHluvEQB32BkcEQ==
=u3H/
-----END PGP PRIVATE KEY BLOCK-----

現在的問題是:如何將其導入C#加密子系統,以便可以將其用於簽名?

C#的內置加密庫僅支持X.509,不支持OpenPGP。 兩者雖然主要使用相同的加密算法,但卻不兼容。 您也許可以提取RSA素數並以某種方式導入它們,但是庫仍將無法產生有效的OpenPGP輸出。

請使用Bouncy Castle庫 ,它是C#的OpenPGP實現(或接口GnuPG ,例如通過GPGME ,但是C#綁定仍然是Alpha版本)。

您所引用的並非完全是“ RSA密鑰”,而是裝甲的OpenPGP專用密鑰,它可能包含RSA密鑰材料,還包含其他內容。

如另一個答案中所述,您將很難在沒有第三方庫的情況下將其導入C#(尤其是在Unity中)。 如果您需要一次性操作,則可以使用我們的SecureBlackbox(評估就足夠了),加載OpenPGP密鑰,然后獲取密鑰材料並將其保存為格式,以便以后加載到Unity中。

如果您計划定期執行此類操作,則可以在不使用OpenPGP的情況下,用C#編寫密鑰生成器並生成適合您需求的RSA密鑰是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM