Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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
C# 在AES加密文件中是否有盐和IV的标准位置_C#_Encryption_Aes - Fatal编程技术网

C# 在AES加密文件中是否有盐和IV的标准位置

C# 在AES加密文件中是否有盐和IV的标准位置,c#,encryption,aes,C#,Encryption,Aes,这些都是用C#编码的,但我不认为这对这个问题有多大影响 目前,我正在镜像OpenSSL功能,以生成和放置密钥/IV/Salt。我只是想知道,有没有一个我应该遵守的标准 目前,我从前16个字节(减去“Salted_uu_;”名称)获取salt。然后我使用salt和密码生成密钥和IV。在加密端,我使用随机生成的salt执行相同的操作 这是行业标准吗?或者,如果我将此信息发送给使用不同产品的人,他们是否可能无法解密我的文件(即使我们从中获取的密码可能相同) 另外,作为旁注,这是生成iv的安全方法吗?还

这些都是用C#编码的,但我不认为这对这个问题有多大影响

目前,我正在镜像OpenSSL功能,以生成和放置密钥/IV/Salt。我只是想知道,有没有一个我应该遵守的标准

目前,我从前16个字节(减去“Salted_uu_;”名称)获取salt。然后我使用salt和密码生成密钥和IV。在加密端,我使用随机生成的salt执行相同的操作

这是行业标准吗?或者,如果我将此信息发送给使用不同产品的人,他们是否可能无法解密我的文件(即使我们从中获取的密码可能相同)

另外,作为旁注,这是生成iv的安全方法吗?还有其他安全问题吗


这个问题是与给我一个密钥而不是密码的外部实体对话的结果。这难道不会使salt变得多余吗,因为键没有变化吗?

salt和/或IV通常在cyphertext前面。接收器知道它们在那里以及它们的大小,因此可以很容易地将它们移除。在您的情况下,您正在生成IV,因此在加密时只需要预先添加固定长度的salt

目前,我正在镜像OpenSSL功能,以生成和放置密钥/IV/Salt。我只是想知道,有没有一个我应该遵守的标准

有多种标准,但OpenSSL是专有的。已知的标准是CMS和OpenPGP,这两种标准都是免费的,并且很容易找到

这是行业标准吗?或者,如果我将此发送给使用其他产品的人,他们可能无法解密我的文件

当然,他们总是可以下载openssl。您现在也有可能使用OpenSSL的专有密钥派生。它是可以实现的,但它是非常非标准的——OpenSSL也应该实现PBKDF2

另外,作为旁注,这是生成iv的安全方法吗?还有其他安全问题吗

只要salt(因此生成的数据密钥)始终不同,它就是安全的。最大的安全问题是缺少完整性/身份验证。您应该始终为通信协议添加MAC

这个问题是与给我一个密钥而不是密码的外部实体对话的结果。这难道不会使salt变得多余吗,因为键不会有变化吗


只要您为每个加密创建一个随机IV,密钥就不必改变。

我想您在@Marko blogoverflow?上会得到更好的响应:PCopy和粘贴错误我的意思是感谢您的回复。不过OpenSSL不是专有的,它是开源的。你能解释一下你提到的两个标准吗?例如,CMS对Salt/IV的位置有何说明?我已经查阅了rfc,但我没有看到与之相关的参考。这些标准的问题是它们非常复杂,并且它们主要与非对称加密一起使用。如果使用混合加密,那么每次都可以使用不同的对称密钥,因此不需要存储IV。关于OpenSSL,我的意思是,它的对称加密方法不符合书面/约定的标准。因此,它是OpenSSL的专利,即使OpenSSL不是任何人的财产。