回答
問:是否使用相同的算法生成公鑰和私鑰?
一般來說它們是而不是使用相同的算法生成。對於RSA,它們可能是相同的,但大多數密碼學庫使用已知的公開指數。這意味着如果知道私鑰很容易推斷公鑰。在許多密鑰格式中,公鑰是,包含在私鑰中,或者可以從私鑰格式的信息容易地計算。
請注意,在公共指數與私有指數具有儘可能多的熵的情況下,理論上可以生成密鑰對。一些HSM確實允許這樣的操作。
總而言之,不能爲了加密目的而犧牲安全性而切換密鑰。
問:用私鑰加密的消息可以用公鑰解密嗎?
理論上,如果你的加密庫允許的話,情況就是這樣。然而,大多數圖書館不允許這樣做。首先,如上所述,這不是安全的操作。此外,許多圖書館會認爲用私鑰加密的東西應該使用填充模式來生成數字簽名。在這種情況下,解密可能會失敗;如果它不是你的密文是不安全的 - 所以這可能更糟。
從PKCS#1規範:
主要的數學運算在每個基元是冪, 如在第5.1節的加密和解密原語。RSASP1 和RSAVP1與RSADP和RSAEP相同,除了名稱爲 的輸入和輸出參數;它們的區別在於它們是用於不同目的的 。
被之前進行加密和簽名生成施加原始不同顯著填充機制。
問:用公鑰加密的消息是否可以用私鑰解密?
這是非對稱加密的基本思想。這意味着「是」。
爲什麼投票結束然後回答?你是正確的投票,我懷疑這個問題將被遷移... –
@DuncanJones我沒有打算,但後來我看到了另外兩個答案。 –
按相應順序:是,是和是。
實際上,只有公鑰可以解密私鑰加密的任何內容,反之亦然。
另請注意,名稱「公共」和「私人」只是任意的。只是對不對稱密鑰對的最佳使用是讓其中一個祕密,其他人知道其他人,所以:
- 帶公鑰的人可以向您發送只有您可以解密的消息私人的;
- 你可以發送只能用你的公鑰解密的消息,所以人們知道你是真正的作者。
*通常* RSA公鑰和私鑰不是使用相同的方法創建的。他們*可以*以相同的方式計算,但公共指數通常是預先配置的值,如3,7或費馬的第四個數字(65537)。這意味着如果你知道你也知道公鑰的私鑰。當然,如果您的私鑰包含密鑰對生成參數,情況也是如此。 –
- 1. 生成私鑰和公鑰的OpenSSL
- 2. C#爲DSA加密算法生成公鑰和私鑰
- 3. 生成OpenSSL私鑰和公鑰
- 4. 生成的RSA公鑰和私鑰模數在Java/Android中是相同的
- 5. 從ssh中的公鑰生成私鑰
- 6. 使用初始密鑰生成公鑰/私鑰對
- 7. 使用Python生成私鑰/公鑰SSH密鑰
- 8. 如何使用Swift 3生成RSA公鑰和私鑰?
- 9. 如何使用pyOpenSSL生成公鑰和私鑰?
- 10. 使用Open SSL生成公鑰和私鑰
- 11. 使用不對稱算法私鑰和公鑰與RSA C#
- 12. 使用以前生成的RSA公鑰/私鑰與.net框架
- 13. AES算法是公鑰還是私鑰的關鍵?
- 14. 私鑰/公鑰
- 15. 私人公鑰是不同
- 16. Python的OpenSSL的生成公鑰和私鑰對
- 17. 創建公鑰和私鑰
- 18. Google recaptcha公鑰和私鑰
- 19. 公鑰和私鑰混淆
- 20. 可以使用JSBN/Forge生成RSA私鑰/公鑰對嗎?
- 21. 如何在Python中使用私鑰生成公共密鑰
- 22. 在「相同」時間使用2個公鑰/私鑰對
- 23. 如何通過RSA生成唯一的公鑰和私鑰
- 24. 在我的情況下生成私鑰和公鑰
- 25. 如何讓Crypt :: RSA顯示已生成的公鑰和私鑰?
- 26. 混淆生成jsse的私鑰和公鑰?
- 27. 是.snk包含私鑰和公鑰嗎?
- 28. github,使用相同的私鑰和公鑰交叉不同的機器。權限被拒絕(公鑰)
- 29. 公鑰是否可以從PGP私鑰生成?
- 30. 生成GPG公鑰和私鑰沒有任何交互
你在說什麼密碼系統/加密? – Shark
在RSA加密中 – MKT
使用私鑰加密消息通常不是一項有用的操作。您應該使用私鑰簽名或解密,並使用公鑰進行加密和驗證。每次使用適當的填充是絕對必要的。即,儘管兩者使用相同的密鑰,簽名和解密仍然非常不同。 – CodesInChaos