C# 如何防止加密(AES)数据被篡改?

C# 如何防止加密(AES)数据被篡改?,c#,aes,C#,Aes,我想在将数据保存到数据库后对其进行加密(AES),并在读取时对其进行解密。如何防止数据库中的数据被篡改?我的算法改进自 我曾经测试过,在加密的密文中随便添加“a”,解密会抛出异常(填充无效且未删除),添加任何字符,会抛出异常吗?没有这种可能性:不抛出异常,可以解密,但结果不是原始数据 string original = "getABEDKK"; string password = "123456kfjsEYR+*j"; string cipherText = Encrypt(original,

我想在将数据保存到数据库后对其进行加密(AES),并在读取时对其进行解密。如何防止数据库中的数据被篡改?我的算法改进自

我曾经测试过,在加密的密文中随便添加“a”,解密会抛出异常(填充无效且未删除),添加任何字符,会抛出异常吗?没有这种可能性:不抛出异常,可以解密,但结果不是原始数据

string original = "getABEDKK";
string password = "123456kfjsEYR+*j";
string cipherText = Encrypt(original, password);
MessageBox.Show("After encrypt:"+cipherText);

string plainText = Decrypt("a"+cipherText, password);
MessageBox.Show("After decrypt:" + plainText);

添加校验和或验证字段之类的内容。然后在加密中添加一层,对数据进行解密,检查验证,如果验证字段不正确,则引发异常。

您是否考虑过使用校验和?您是说如果篡改数据,则在解密时会出现异常?那不是你想要的吗?如果你想在第一时间彻底阻止篡改,在解密太晚的时候检测到它已经发生,那么你需要锁定存储,就这么简单。那些类型的加密/解密算法实际上不是这样工作的。如果某个内容发生了更改,那么它很可能会抛出异常,因为它实际上无法解密。我能想到的唯一一件事是,它会以您想要的方式运行,那就是简单的XOR加密,这并不是最安全的..防止未经授权访问数据库?在我的密文中添加任何内容都会引发异常,例如上面的代码?您不明白。在加密文本之前,将校验和或验证添加到文本中。通常,该验证字段是要加密的实际内容的函数。然后当你解密时,你解密加密的文本,然后解密的文本应该包含你的验证字段,格式正确,并且它应该仍然与你从应用最初生成它的函数中得到的匹配。