『壹』 面向對象基礎知識之文件加密解密
文件加密解密是開發中經常用到的一個功能點,常見於客戶端項目,需要對配置數據、參數設置、數據字典等需要隱匿,來增強客戶端的安全性。
本章我們介紹兩種常見文件加密解密方法
1.自定義加密解密函數,思路是文件轉成Byte[],對byte元素使用對稱加密演算法對齊加密。加密後的byte[]轉成base64。解密文件使用base64加密的byte[]解密即可生成原文件。
2.使用 System.Security.Cryptography. RijndaelManaged,這種加密需要提供32位密碼和16位向量密碼
//加密
string pwd = "" ; //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 混合加密。
『貳』 公司內部的數據文件如何防止泄露
1,員工入職時 簽訂保密協議,為員工普及相關法律的知識。也為日後維權做好鋪墊。
2,內部實時獎懲制,互相監督。一個文件盡量多個人同時負責等等。
3,安裝域之盾軟體 開啟透明加密功能,用戶使用基本無感,不影響用戶日常的操作行為。
4,開啟軟體的外發審核功能,一切的外發行為都需要審核 包括 qq 微信 郵箱 網盤等等。如果不審核即為非法外發,那麼發出去的文件就都是亂碼。。
5,對常用U盤 設置u盤白名單,設置陌生U盤只讀或禁止使用。