Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加密和数字签名能否只生成一个文件?_Java_Cryptography_Public Key Encryption - Fatal编程技术网

Java 加密和数字签名能否只生成一个文件?

Java 加密和数字签名能否只生成一个文件?,java,cryptography,public-key-encryption,Java,Cryptography,Public Key Encryption,我正在尝试使用AES对Java中的文件进行加密,然后对其进行数字签名并将其存储在数据库中,这样我就可以验证签名,然后在获取该文件时对其进行解密。我已经阅读了Oracle的数字签名教程,但他们最终创建了3个文件,即:数据、签名和公钥。我正在寻找一个解决方案,我只有一个文件。有没有这样的解决办法?我对密码学还不熟悉,所以无法收集太多关于它的信息 是:您可以简单地将生成的文件连接成一个文件(使用分隔符以便可以再次拆分它们)。 或者,您可以将它们全部放在一个zip文件中,并在处理之前将其解压缩 oops

我正在尝试使用AES对Java中的文件进行加密,然后对其进行数字签名并将其存储在数据库中,这样我就可以验证签名,然后在获取该文件时对其进行解密。我已经阅读了Oracle的数字签名教程,但他们最终创建了3个文件,即:数据、签名和公钥。我正在寻找一个解决方案,我只有一个文件。有没有这样的解决办法?我对密码学还不熟悉,所以无法收集太多关于它的信息

是:您可以简单地将生成的文件连接成一个文件(使用分隔符以便可以再次拆分它们)。 或者,您可以将它们全部放在一个zip文件中,并在处理之前将其解压缩


oops遗漏了数据库部分:在那里,您可以将信息存储为ascii编码的varchar,或者直接将生成的文件读入BLOB中,这当然是可能的。如果您只是连接结果(可能由一个长度指示符处理以使其保持可见),那么您就已经合成了这样一个blob,它可以存储在一个文件中

那当然不是一个很好描述的结构。在密码学中,已经定义了这样的结构。除了为RNCrypt等库定义的许多结构之外,还有两种众所周知的容器格式:CMS和PGP。CMS或加密消息语法最初是为SMIME描述的,并由RSA的PKCS#7标准发展而来。OpenPGP由PGP和GPG等应用程序使用


对于Java,PGP和CMS功能都由Bouncy Castle库提供。

这取决于您的情况,但只有在以下所有情况均为真时,您才需要公钥签名。您想:

  • 在不同的位置运行AES加密引擎的多个版本
  • 然后需要能够验证哪个服务器加密了哪些文件
  • 在检查过程中防止中间人攻击 这是一种非常罕见的情况,我建议您实际上不需要公钥签名

    通常,您只需附加一个“签名”来验证文件。我之所以称之为签名,是因为它是一种签名,因为它使用对称AES加密/解密密钥和加密文件内容来生成代码。这将保护文件的完整性,防止不知道加密/解密密钥的人修改文件

    如果您使用AES加密文件,我建议使用此免费软件。下载页面上有一个