先给大家介绍一下按位取反运算符“~”
按位取反就是对数据的每个二进制位取反,即把0变成1,把1变成0。
例如二进制"00001111",取反操作得到"11110000"。
由此,我们可以通过位取反操作实现一个简单的自动加解密程序。
加密时将每一个字节进行位取反操作,解密也进行同样操作,就能得出原数据。
C# 通过按位取反实现简单自动加解密
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace CRApp
{
class Program
{
static int Main(string[] args)
{
Transcode(@"d:\test\ZhangCirong.txt");
return (0);
}
public static bool Transcode(string filePath)
{
FileStream fsr = null;
FileStream fsw = null;
try
{
File.Delete(filePath+@".tmp");
fsr = new FileStream(filePath,FileMode.Open,FileAccess.Read);
fsw = new FileStream(filePath+@".tmp",FileMode.OpenOrCreate,FileAccess.Write);
int length = 0;
byte[] buffer = new byte[1024*1024*10];
while ((length=fsr.Read(buffer,0,buffer.Length)) > 0)
{
for (int i = 0; i < length; i++)
{
buffer[i] = (byte)~buffer[i];
}
fsw.Write(buffer,0,length);
}
return (true);
}
catch (Exception ex)
{
return (false);
}
finally
{
fsr.Close();
fsw.Close();
File.Delete(filePath);
if (File.Exists(filePath+@".tmp"))
{
File.Move(filePath+@".tmp",filePath);
}
}
}
}
}
[本文作者张赐荣]