我想用AES對Java文件進行加密,然後對其進行數字簽名並將其存儲在數據庫中,以便我可以驗證簽名,然後在獲取該文件時將其解密。我已經閱讀了Oracle的數字簽名教程,但他們最終創建了3個文件,即:數據,簽名&公鑰。我正在尋找一個解決方案,我只有一個文件。有沒有這樣的解決方案?我對密碼學並不熟悉,因此無法收集有關它的大量信息。加密和數字簽名能產生一個文件嗎?
1
A
回答
0
這取決於你的情況,但你只需要一個公鑰簽名,如果全部以下事情是真的。你想:在不同的地方你的AES加密引擎的
- 運行多個版本
- 則需要能夠驗證哪個服務器加密該文件
- 而在這中間攻擊防範男人檢查
這是相當罕見的情況,我建議你不真的需要公鑰簽名。
通常情況下,您只需附加一個HMAC「簽名」來驗證文件。我稱它爲簽名,因爲它是使用對稱AES加密/解密密鑰和加密文件內容生成代碼的意義上的一種簽名。這將保護文件的完整性,使其不知道加密/解密密鑰的人進行修改。
如果你使用AES加密文件,我建議使用這個免費的open source file format。在下載頁面上有一個JAVA library available。
0
是的:你可以簡單地將結果文件連接成一個(使用分隔符,所以你可以再次分割)。 或者你可以把它們放到一個zip文件中並在處理之前將它們解壓縮。
哎呀錯過了數據庫部分:那裏你可以存儲信息既可以作爲ASCII編碼的VARCHAR或直接讀取生成的文件到BLOB的
2
這當然是可能的。如果你只是連接結果(可能由一個長度指示器來保持它們適用),那麼你已經合成了這樣一個單一的blob,它可以存儲在一個文件中。
這當然不是一個很好描述的結構。在密碼學中,已經有了定義這樣的結構。除了爲諸如RNCrypt之類的庫定義的許多結構之外,還有兩種衆所周知的容器格式:CMS和PGP。 CMS或加密消息語法最初針對SMIME進行了描述,並且由RSA從PKCS#7標準發展而來。 OpenPGP由PGP和GPG等應用程序使用。
對於Java,PGP和CMS功能由Bouncy Castle庫提供。
相關問題
- 1. AES加密和RSA數字簽名方案可以協同工作以進行文件加密嗎?
- 2. 加密和簽名製作
- 3. 僅在C#中產生字母數字的加密和解密方法
- 4. 在一個pdf添加簽名文件
- 5. 用的Node.js /加密生成ECDSA簽名
- 6. 使用WebCrypto生成一對密鑰用於加密有用和簽名
- 7. c# - 數字簽名文件
- 8. JAR文件:數字簽名
- 9. 數字簽名tar.gz文件
- 10. 產生字母數字字符的基於Java的加密
- 11. 使用x509證書和加密的數字簽名
- 12. 生成SOAP信封和數字簽名
- 13. 使用BouncyCastle驗證PgP加密和簽名文件
- 14. 加密和解密一個字符串
- 15. 加密和解密一個字符串。
- 16. AES128-CBC加密可以產生奇數長度的輸出嗎?
- 17. 使用gpg對加密密鑰進行數字簽名
- 18. 生成數字簽名
- 19. 如何驗證簽名和解密a;加密和簽名內容
- 20. RSA可以用作加密和簽名嗎?
- 21. 加密Sql和解密在asp.net(查詢字符串)可能嗎?
- 22. CryptoJS - 解密一個加密文件
- 23. WCF netTcpBinding Windows安全加密和簽名
- 24. Axis2 + Rampart WebService簽名和加密
- 25. 如何在iOS中加密文件名和文件夾名稱?
- 26. 如何知道一個文件具有數字簽名屬性
- 27. 加密和解密文件
- 28. 文件加密和解密
- 29. 的Java加密/與RSA產生從模密鑰和解密指數
- 30. Java - 從配置文件加密/解密用戶名和密碼