2017-09-08 29 views
0

我有一個DSA參數的PEM文件。換句話說,內容有頁眉/頁腳是這樣的:如何從Bouncycastle中的PEM文件加載DSA參數?

-----BEGIN DSA PARAMETERS----- ....... -----END DSA PARAMETERS-----

我看到BouncyCastle的具有類DSAParametersDSAKeyGenerationParmaters。我懷疑這個PEM是這些參數的表示,但我無法弄清楚如何從PEM格式加載它。我認爲DSA的簽名是40字節,但是我得到的是46字節,我懷疑DSA參數是責任,我有這個舊的dsa1024。我正在嘗試加載並用於生成密鑰/生成簽名......)

+0

您是否試過PEMReader? – Lothar

回答

1

至少通過1.57(我還沒有安裝1.58)BCpkix org.bouncycastle.openssl.PEMParser未實現DSA參數(儘管它做EC參數),所以這不是一件容易的事。 只是看看你的參數將是(多)更容易使用

openssl dsaparam -in file -noout -text 

但我保證你不會發現任何錯誤在你的參數。經典的DSA參數是1024位組和160位的子組,在20年內沒有任何變化或改變,我從未見過任何實現出錯。

DSA-1024/160簽名佔用超過40個八位字節的常見原因是因爲按照慣例(雖然FIPS 186不要求),它被編碼在ASN.1 DER中。如果你問一個關於這個問題,我可以指出您現有的QS用於ECDSA,其中有完全相同的問題:

https://crypto.stackexchange.com/questions/1795/how-can-i-convert-a-der-ecdsa-signature-to-ASN.1 https://crypto.stackexchange.com/questions/33095/shouldnt-a-signature-using-ecdsa-be-exactly-96-bytes-not-102-or-103
https://crypto.stackexchange.com/questions/37528/why-do-openssl-elliptic-curve-digital-signatures-differ-by-one-byte
https://crypto.stackexchange.com/questions/44988/length-of-ecdsa-signature

但既然你問了一個問題這不是關於你的實際問題,它是針對堆棧策略給你一個解決你的實際問題的方法。

FWIW如果生成一個DSA 密鑰(對)中的OpenSSL使用的參數,所有4種PEM格式專用密鑰(PKCS8清晰和加密的,「舊版」清晰和加密)和用於公鑰通常的PEM格式(SPKI ),可由PEMParser讀取,並且可以產生可以從中提取參數的關鍵對象。 (從技術上說,SPKI的規範允許在某些情況下省略DSA參數,但OpenSSL從不這樣做。)

+0

你是對的。我很快就知道我真正的問題在於,bouncycastle給了我一個asn.1編碼的簽名,我期待着原始字節......所以我會探索這些問題的答案。 – Ben

相關問題