文件加密解密是开发中经常用到的一个功能点,常见于客户端项目,需要对配置数据、参数设置、数据字典等需要隐匿,来增强客户端的安全性。
本章我们介绍两种常见文件加密解密方法
1.自定义加密解密函数,思路是文件转成Byte[],对byte元素使用对称加密算法对齐加密。加密后的byte[]转成base64。解密文件使用base64加密的byte[]解密即可生成原文件。
2.使用System.Security.Cryptography. RijndaelManaged,这种加密需要提供32位密码和16位向量密码
代码实例://加密
string pwd = "gjhdjfhdjdkdssajdjfkdjfdlijfadsd";//32位,密码
string ivpwd = "gjhdjfhdjdkdssad";//16位,向量密码
RijndaelManaged aes = new RijndaelManaged();
byte[] pwdBytes = 电脑System.Text.Encoding.UTF8.GetBytes(pwd);
aes.Key = pwdBytes;
aes.IV = Encoding.UTF8.GetBytes(ivpwd);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte[] readFileByte = 电脑 ReadByte(filePath);
ICryptoTransform transform = aes.CreateEncryptor();
byte[] fielBuffer = transform.TransformFinalBlock(readFileByte, 0, readFileByte.Length); //注意这里返回的是加密后的byte[]
//解密
RijndaelManaged aes = new RijndaelManaged();
byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(pwd);
aes.Key = pwdBytes;
aes.IV = Encoding.UTF8.GetBytes(ivpwd);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte[]电脑 readFileByte = ReadByte(filePath);
ICryptoTransform transform = aes.CreateDecryptor();
//注意这里返回的是解密后的byte[]
byte[] fielBuffer = 电脑 transform.TransformFinalBlock(readFileByte, 0, readFileByte.Length);
加密方式越复杂需要的计算量越大,速度相应会变慢;加密方式需要结合项目来做选择。客户端项目对于数据保密性较强建议使用RSA和RijndaelManaged 混合加密。
电脑