Encryption 如何分发init。通过对称密码加密数据的向量?

Encryption 如何分发init。通过对称密码加密数据的向量?,encryption,cryptography,Encryption,Cryptography,我想为用户提供一种服务,通过对称密码将一些数据加密到文件中。用户只需提供一个密钥,他/她可以为密码提供一个初始化向量 是否有标准的文件外观?用加密数据填充文件并在对话框窗口中显示相应的初始化向量是有意义的。对于其他人来说,初始化向量应该与加密数据一起存储在文件中似乎是合理的 对我来说,重要的是结果对用户很有用,他/她不需要费心调整结果 谢谢你的评论 如果您将IV与加密数据一起存储在文件中,您应该不会有问题…如果您将IV与加密数据一起存储在文件中,您应该不会有问题…原则上,只要程序的解密部分知道如

我想为用户提供一种服务,通过对称密码将一些数据加密到文件中。用户只需提供一个密钥,他/她可以为密码提供一个初始化向量

是否有标准的文件外观?用加密数据填充文件并在对话框窗口中显示相应的初始化向量是有意义的。对于其他人来说,初始化向量应该与加密数据一起存储在文件中似乎是合理的

对我来说,重要的是结果对用户很有用,他/她不需要费心调整结果


谢谢你的评论

如果您将IV与加密数据一起存储在文件中,您应该不会有问题…

如果您将IV与加密数据一起存储在文件中,您应该不会有问题…

原则上,只要程序的解密部分知道如何读取,您可以使用您想要的任何格式。为了提高效率,将初始化向量放在数据之前似乎是个好主意

如果您想要加密文件,最好不要创建自己的格式(这会导致您不得不做出与此处类似的决定),而是使用现有的文件格式(这也是一种加密协议)


我推荐(或者其中的一些子集,如果您不需要所有功能的话)。这还有一个优点,即如果您的程序以某种方式停止工作(当然,只有在他们拥有密钥/密码的情况下),那么您的客户端就可以使用任何OpenPGP实现(如pgp或gpg)对您的文件进行解密。

原则上,只要程序的解密部分知道如何读取,您就可以使用您想要的任何格式。为了提高效率,将初始化向量放在数据之前似乎是个好主意

如果您想要加密文件,最好不要创建自己的格式(这会导致您不得不做出与此处类似的决定),而是使用现有的文件格式(这也是一种加密协议)


我推荐(或者其中的一些子集,如果您不需要所有功能的话)。这还有一个优点,即如果您的程序以某种方式停止工作(当然,只有在他们拥有密钥/密码的情况下),那么您的客户端就可以使用任何OpenPGP实现(如pgp或gpg)对您的文件进行解密。

通常的做法是将IV作为cyphertext文件的第一个块。这样,接收器只将前8个字节(DES)或16个字节(AES)视为IV,将文件的其余部分视为实际的密码文本


为IV使用与您用于cyphertext相同的格式:Base64、十六进制、字节数据或其他任何格式。

通常将IV作为cyphertext文件的第一个块提供。这样,接收器只将前8个字节(DES)或16个字节(AES)视为IV,将文件的其余部分视为实际的密码文本


使用与密码文本相同的IV格式:Base64、十六进制、字节数据或其他任何格式。

但是如何使用?第四行和其他行应该是二进制数据?@MartyIX。。。根据存储的其他内容,您可能需要编写一些头文件,其中包含有关文件布局的信息。。。或者您可以将所有内容(iv,数据)逐字节转储到文件中。。。或者您可以使用xml。。。无尽的可能性…是的,我知道。我只是想知道是否有一个常用的标准。因为如果有,那么我的服务对于我的自定义输出实现是无用的。用户将不能在他/她的另一个程序中使用它。好吧,如果您有一个用于您的格式的公共文档,应该没有问题,但是如何使用呢?第四行和其他行应该是二进制数据?@MartyIX。。。根据存储的其他内容,您可能需要编写一些头文件,其中包含有关文件布局的信息。。。或者您可以将所有内容(iv,数据)逐字节转储到文件中。。。或者您可以使用xml。。。无尽的可能性…是的,我知道。我只是想知道是否有一个常用的标准。因为如果有,那么我的服务对于我的自定义输出实现是无用的。用户将无法在他/她的另一个程序中使用它。好吧,如果您有一个用于您的格式的公共文档,应该不会有问题