C#给Sqlite数据库进行加密、修改密码_c#怎么给存入sqlite的数据加密
在C#中,给存入SQLite数据库的数据加密可以通过以下步骤实现:
- 使用一个加密库,如
System.Security.Cryptography
来加密数据。 - 在插入数据到SQLite数据库之前,对数据进行加密。
- 从数据库读取数据时,对数据进行解密。
以下是一个简单的例子,使用AES算法进行数据加密和解密:
using System;
using System.Security.Cryptography;
using System.Text;
public class SQLiteEncryption
{
private static readonly byte[] Key = Encoding.UTF8.GetBytes("1234567812345678"); // 16字节密钥
private static readonly byte[] IV = Encoding.UTF8.GetBytes("1234567812345678"); // 16字节初始化向量
public static string Encrypt(string plainText)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
}
public static string Decrypt(string cipherText)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
byte[] bytes = Convert.FromBase64String(cipherText);
using (MemoryStream msDecrypt = new MemoryStream(bytes))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
在插入数据库时使用Encrypt
方法加密数据,从数据库读取时使用Decrypt
方法解密数据。
注意:
- 密钥(Key)和初始化向量(IV)应该是安全随机生成的,并且对数据加密解密过程中保持一致。
- 示例代码中的密钥和初始化向量是为了简化例子而硬编码的,在实际应用中应该以安全的方式管理它们。
- 使用AES算法时,密钥和初始化向量的长度必须满足所选算法的要求。AES算法要求的密钥长度可以是128, 192
评论已关闭