#region AES加密 private byte[] AESEncrypt(byte[] data, string key) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] buffer = md5.ComputeHash(Encoding.Default.GetBytes(key)); byte[] bKey = GetKey(buffer); byte[] bVector = md5.ComputeHash(Encoding.Default.GetBytes("Wen")); byte[] Cryptograph = null; Rijndael Aes = Rijndael.Create(); try { using (MemoryStream Memory = new MemoryStream()) { using (CryptoStream Encryptor = new CryptoStream(Memory, Aes.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write)) { Encryptor.Write(data, 0, data.Length); Encryptor.FlushFinalBlock(); Cryptograph = Memory.ToArray(); } } } catch (Exception e) { this.msg = e.Message; Cryptograph = null; } return Cryptograph; } #endregion #region AES解密 public byte[] AESDecrypt(byte[] data, string key) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] buffer = md5.ComputeHash(Encoding.Default.GetBytes(key)); byte[] bKey = GetKey(buffer); byte[] bVector = md5.ComputeHash(Encoding.Default.GetBytes("Wen")); byte[] original = null; Rijndael Aes = Rijndael.Create(); try { using (MemoryStream Memory = new MemoryStream(data)) { using (CryptoStream Decryptor = new CryptoStream(Memory, Aes.CreateDecryptor(bKey, bVector), CryptoStreamMode.Read)) { using (MemoryStream originalMemory = new MemoryStream()) { byte[] Buffer = new byte[1024]; int readBytes = 0; while ((readBytes = Decryptor.Read(Buffer, 0, Buffer.Length)) > 0) { originalMemory.Write(Buffer, 0, readBytes); } original = originalMemory.ToArray(); } } } } catch (Exception e) { msg = e.Message; original = null; } return original; } #endregion #region 将byte数组从正序至反序添加到key private byte[] GetKey(byte[] buffer) { byte[] key = new byte[buffer.Length * 2]; for (int i = 0; i < key.Length; i++) { if (i >= buffer.Length) { key[i] = buffer[buffer.Length - (i / buffer.Length + i % buffer.Length)]; } else { key[i] = buffer[i]; } } return key; } #endregion #region 用二进制方式读取文件 private byte[] ReadFileByByte(string fileName) { byte[] data; try { using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)) { data = new byte[fs.Length]; int offset = 0; int remaining = data.Length; while (remaining > 0) { int read = fs.Read(data, offset, remaining); if (read <= 0) throw new EndOfStreamException("File read failure!"); remaining -= read; offset += read; } } } catch (Exception e) { data = null; this.msg = e.Message; } return data; } #endregion #region 以二进制形式将数据写入文件 private bool WriteFileByByte(string fileName, byte[] data) { try { using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) { fs.Write(data, 0, data.Length); return true; } } catch (Exception e) { this.msg = e.Message; return false; } } #endregion
相关文章:
- python文件的md5加密方法 2022-01-04
- 好玩的文件加密方法(自己给文件头部加密) 2021-11-27
- mac && linux 上的文件加密解密方法 2021-04-10
- linux下文件加密方法总结 2021-11-28
- PHP加密方法-用Zend Encoder加密PHP文件和PHP 优化配置(PHP文件加密) 2021-12-19
- 使用RSA加密方式加密文件 2022-03-04
- linux 使用vim文件加密/解密的方法 2021-11-04