Mr.Victor

梦里不知身是客,一晌贪欢!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

凯撒加密/解密算法(C#)

Posted on 2011-08-20 17:43  Mr-Victor  阅读(2008)  评论(0编辑  收藏  举报

/***************加密***************/
public void Encryption()
{
  FileStream fs1 = new FileStream(加密源文件的存放路径, FileMode.Open, FileAccess.Read);
  FileStream fs2 = new FileStream(加密后文件的存放路径, FileMode.Create);
  BinaryReader br1 = new BinaryReader(fs1);
  BinaryWriter br2 = new BinaryWriter(fs2);
  byte[] bys1 = br1.ReadBytes((int)fs1.Length);
  byte[] bys2 = new byte[(int)(bys1.Length) * 2];

  //加法加密
  if ()
  {

    for (int i = 0, k = 0, j = 1; i < bys1.Length; i++, k = k + 2, j = j + 2)
    {
      bys2[k] = (byte)((Convert.ToInt16(bys1[i]) + Convert.ToInt16(参数(密钥))) % 128 + 128);
      bys2[j] = (byte)((Convert.ToInt16(bys1[i]) + Convert.ToInt16(参数(密钥))) / 128);
    }
    br2.Write(bys2);
  }
  //乘法加密
  else
  {
    for (int i = 0, k = 0, j = 1; i < bys1.Length; i++, k = k + 2, j = j + 2)
    {
      bys2[k] = (byte)((Convert.ToInt16(bys1[i]) * Convert.ToInt16(参数(密钥))) % 128 + 128);
      bys2[j] = (byte)((Convert.ToInt16(bys1[i]) * Convert.ToInt16(参数(密钥))) / 128);
    }
    br2.Write(bys2);
  }
  br2.Close();
  br1.Close();
}

/***************解密***************/
public void Decryption()
{
  FileStream fs1 = new FileStream(解密源文件的存放路径, FileMode.Open, FileAccess.Read);
  FileStream fs2 = new FileStream(解密后文件的存放路径, FileMode.Create);
  BinaryReader br1 = new BinaryReader(fs1);
  BinaryWriter br2 = new BinaryWriter(fs2);
  byte[] bys1 = br1.ReadBytes((int)fs1.Length);
  byte[] bys2 = new byte[(int)(bys1.Length) / 2];
           
  //加法解密
  if ()
  {
    for (int i = 0, j = 1, k = 0; i < bys1.Length; i = i + 2, j = j + 2, k++)
    {
      bys2[k] = (byte)(((Convert.ToInt16(bys1[i]) - 128) + (Convert.ToInt16(bys1[j]) * 128)) - Convert.ToInt16(参数(密钥)));
    }
    br2.Write(bys2);
  }
  //乘法解密
  else
  {
    for (int i = 0,j=1,k=0; i < bys1.Length; i=i+2,j=j+2,k++)
    {
      bys2[k] = (byte)(((Convert.ToInt16(bys1[i]) - 128) + (Convert.ToInt16(bys1[j]) * 128)) / Convert.ToInt16(参数(密钥)));
    }
    br2.Write(bys2);
  }
  br2.Close();
  br1.Close();
}