zoukankan      html  css  js  c++  java
  • 凯撒加密/解密算法(C#) Mr

    /***************加密***************/
    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();
    }

  • 相关阅读:
    using可以用于释放操作,相当于Dispose()
    Entity Framework 5.0 Code First全面学习
    .NET Entity Framework入门操作
    李克强:让科技人员合理合法富起来
    THC=TERMINAL HANDLING CHARGE,碼頭操作費
    到处寻找移动互联网的风口:站在台风口,猪都能飞上天,为什么互联网能在家装行业产生这么巨大的冲击力?
    群雄逐鹿 互联网家装市场烽烟四起
    要给出互联网解决社会性问题的步骤与方法
    Spring Cloud 2-Hystrix DashBoard仪表盘(五)
    Spring Cloud 2-Hystrix 断路容错保护(四)
  • 原文地址:https://www.cnblogs.com/miaohw/p/2147354.html
Copyright © 2011-2022 走看看