我正在使用以下代码。密钥和向量是从Web复制的。那里没有秘密。
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();
}
有人可以解释密钥和向量设置的含义。我想私下编码我的数据加密方式,但我不知道从哪里开始。
谢谢,
答案 0 :(得分:3)
密钥只是您的加密密钥,即某人需要解密数据的密码。 AES是一种对称密码,因此相同的密钥将用于加密和解密。
initialization vector(IV)是一个技术细节:在block cipher中使用CBC mode时,每个输入块的密文取决于前一个输入块的密文(以及当然,在当前输入块和键上)。但是,在尝试加密第一个块时,没有要考虑的“先前”数据;在这种情况下,IV取代了“0th”输入块的密文。
实际上,这意味着在解密时,除了密钥之外,还必须知道IV。但是,IV不是敏感信息,您只需将其与密文一起存储(从而使密钥成为您尚未拥有的解密所需的唯一信息)。
注意: 多次使用相同的IV 是一种好习惯;每次需要加密时,你都可以简单地生成一个随机的。
答案 1 :(得分:0)