Cryptography C#加密AES密钥生成?

Cryptography C#加密AES密钥生成?,cryptography,aes,auto-generate,Cryptography,Aes,Auto Generate,我有一个关于AES何时生成密钥的问题,IV用户如何知道密钥是什么,或者程序如何知道使用哪个密钥,就像生成密钥一样。例如,如果有一种加密方法对文件进行加密并生成密钥和IV。当程序重新启动或改天使用时,他们会希望使用解密,但您如何知道或程序如何知道该文件的密钥 我通过看它来理解解密和加密。我只是不知道在哪里存储信息来检索密钥?是任何加密相关协议的一大部分。大概需要一本书来解释 最为人所知的方法之一是使用密码(请参阅中的基于密码的加密,其中密钥是由(存储的)salt、迭代次数以及密码(编码为字节)生成

我有一个关于AES何时生成密钥的问题,IV用户如何知道密钥是什么,或者程序如何知道使用哪个密钥,就像生成密钥一样。例如,如果有一种加密方法对文件进行加密并生成密钥和IV。当程序重新启动或改天使用时,他们会希望使用解密,但您如何知道或程序如何知道该文件的密钥

我通过看它来理解解密和加密。我只是不知道在哪里存储信息来检索密钥?

是任何加密相关协议的一大部分。大概需要一本书来解释

最为人所知的方法之一是使用密码(请参阅中的基于密码的加密,其中密钥是由(存储的)salt、迭代次数以及密码(编码为字节)生成的)。另一种方法是将密钥存储在某些可移动设备(如USB密钥)上

通常主密钥不用于加密数据,但使用称为数据或会话密钥的中间密钥。例如,生成数据密钥并使用非对称密钥对的公钥对其进行加密

还有智能卡、TPM模块、HSM、密钥容器(可能由操作系统提供)、密钥共享协议等

所以…这要看情况而定


有时更容易将密钥视为另一个秘密。通过加密某些内容,您只会将较大的秘密(明文)压缩为较小的秘密(密钥)您必须保留和管理的。但是,此秘密可能是提前生成的,或者可能是通过其他方式生成的。如果您只是在与密文相同的时间和位置生成密钥,您还没有解决任何问题,您只会使您的秘密变小


对于IV来说更容易,IV可以简单地与密文一起存储(通常在密文前面)