即使資料被帶走,也不一定能解出來。
過幾年,科技進步了,當初的資料能破解時,就看資料是不是還是有用了。
//流程 //1.將字串轉為Byte, //2.把Byte變成加密的Byte //3.再轉成Base64字串
private string 基本的加密(string 要加密的字串, string 私鑰) { //加密參數為 Byte[] 所以要將字串轉為Byte[] byte[] 要加密的字串byte = Encoding.UTF8.GetBytes(要加密的字串); byte[] 祕密金鑰 = Encoding.UTF8.GetBytes(私鑰); byte[] 初始化向量 = Encoding.UTF8.GetBytes("我是初始化向量"); //初始化向量(IV)與祕密金鑰(Key)有固定的長度,用雜湊過後的值可以是同樣的長度 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] 初始化向量byte = md5.ComputeHash(初始化向量); byte[] 祕密金鑰byte = md5.ComputeHash(祕密金鑰); //AES加解密演算法 AesCryptoServiceProvider AES加解密演算法 = new AesCryptoServiceProvider(); ICryptoTransform AES = AES加解密演算法.CreateEncryptor(祕密金鑰byte, 初始化向量byte); byte[] 加密後的Byte = AES.TransformFinalBlock(要加密的字串byte, 0, 要加密的字串byte.Length); return Convert.ToBase64String(加密後的Byte); }
private string 基本的解密(string 要解密的字串, string 私鑰) { //解密參數為 Byte[] 所以要將字串轉為Byte[] byte[] 要解密的字串Byte = Convert.FromBase64String(要解密的字串); byte[] 祕密金鑰 = Encoding.UTF8.GetBytes(私鑰); byte[] 初始化向量 = Encoding.UTF8.GetBytes("我是初始化向量"); //初始化向量(IV)與祕密金鑰(Key)有固定的長度,用雜湊過後的值可以是同樣的長度 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] 初始化向量byte = md5.ComputeHash(初始化向量); byte[] 祕密金鑰byte = md5.ComputeHash(祕密金鑰); //AES加解密演算法 AesCryptoServiceProvider AES加解密演算法 = new AesCryptoServiceProvider(); ICryptoTransform AES = AES加解密演算法.CreateDecryptor(祕密金鑰byte, 初始化向量byte); byte[] 解密後的Byte = AES.TransformFinalBlock(要解密的字串Byte, 0, 要解密的字串Byte.Length); return Encoding.UTF8.GetString(解密後的Byte); }
Sample 範例
https://drive.google.com/open?id=0B1XxIr6Ve-glYm1Kekk3bHcyM3c
沒有留言:
張貼留言