加密时如何设置密钥和矢量

本文关键字:密钥 设置 何设置 加密 | 更新日期: 2023-09-27 18:00:36

我正在使用以下代码。关键点和矢量是从网络上复制的。那里没有秘密。

    private static byte[] key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 };
    private static byte[] vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 221, 112, 79, 32, 114, 156 };
    private ICryptoTransform encryptor, decryptor;
    private UTF8Encoding encoder;
    public SimplerAES()
    {
        RijndaelManaged rm = new RijndaelManaged();
        encryptor = rm.CreateEncryptor(key, vector);
        decryptor = rm.CreateDecryptor(key, vector);
        encoder = new UTF8Encoding();
    }

有人能解释一下键和矢量设置的含义吗。我想私下对我的数据加密方式进行编码,但我不确定从哪里开始。

谢谢,

加密时如何设置密钥和矢量

密钥只是您的加密密钥,即某人解密数据所需的密码短语。AES是一种对称密码,因此加密和解密都将使用相同的密钥。

初始化向量(IV)是一个技术细节:当在CBC模式下使用分组密码时,每个输入块的密文取决于前一个输入块的密码(当然也取决于当前输入块和密钥)。然而,当试图加密第一个块时,没有"以前"的数据需要考虑;在这种情况下,IV代替"第0"个输入块的密文。

在实践中,这意味着在解密时,除了密钥之外,还需要知道IV。然而,IV不是敏感信息,你可以简单地将其与密文一起存储(从而使密钥成为你需要解密的唯一信息,而你还没有)。

注意:最好不要多次使用同一IV;每次需要加密某个东西时,您可以简单地生成一个随机的。

查看以下网站应该会有所帮助。

加密1

加密2

加密3