兩種常見文件加密方式
文件加密解密是開發(fā)中經(jīng)常用到的一個(gè)功能點(diǎn),常見于客戶端項(xiàng)目,需要對(duì)配置數(shù)據(jù)、參數(shù)設(shè)置、數(shù)據(jù)字典等需要隱匿,來增強(qiáng)客戶端的安全性。
本章我們介紹兩種常見文件加密解密方法
1.自定義加密解密函數(shù),思路是文件轉(zhuǎn)成Byte[],對(duì)byte元素使用對(duì)稱加密算法對(duì)齊加密。加密后的byte[]轉(zhuǎn)成base64。解密文件使用base64加密的byte[]解密即可生成原文件。
2.使用System.Security.Cryptography. RijndaelManaged,這種加密需要提供32位密碼和16位向量密碼
代碼實(shí)例:
//加密
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);
總結(jié)
加密方式越復(fù)雜需要的計(jì)算量越大,速度相應(yīng)會(huì)變慢;加密方式需要結(jié)合項(xiàng)目來做選擇??蛻舳隧?xiàng)目對(duì)于數(shù)據(jù)保密性較強(qiáng)建議使用RSA和RijndaelManaged 混合加密。