一个比较牛的加密算法

摘要:
如果(iFlag==1){li_len=源长度;ls_i=((char)(li_asc-i)).ToString();ls_i=((char)(li_rand)).ToString()+((char)(li_asc-i-li_head)).To字符串();

一个加密算法

据说此加密算法每次加密的结果都不同,但解密的结果相同

using System;

namespace test001
{
 /**
   对sSource,进行加密、解密操作。
   @param sSource String :操作的字符串
   @param iFlag int :操作类型 1-加密  2-解密
   @return String :加密或解密后的字符串
    **/
 public class password
 {
  public password()
  {
  }
  public static string pWord(string sSource,int iFlag)
  {
   if(sSource==null)
    return null;
   if(sSource.Equals(""))
    return "";
   int li_len,i,li_asc,li_rand,li_head;
            string ls_i,ls_code="";
   if(iFlag ==1)
   {
    li_len=sSource.Length;
    Random rdm1 = new Random(~unchecked((int)DateTime.Now.Ticks));
    li_head=(int)(rdm1.NextDouble()*10);
    if(li_head ==0)
     li_head =1;
    for(i=0; i<li_len; i++)
    {
     Random rdm2 = new Random(~unchecked((int)DateTime.Now.Ticks));
     int rand2 =(int)(rdm2.NextDouble() *94);
     if(rand2 ==0)
      rand2 =1;
     li_rand=rand2+32;
     li_asc=Convert.ToInt32(sSource.ToCharArray(i,1)[0]);
     ls_i=((char)(li_asc -i)).ToString();

     if(li_asc+i+li_head>126)
     {
      if(li_rand%2 ==1)
       li_rand=li_rand+1;
      ls_i=((char)(li_rand)).ToString()+((char)(li_asc -i -li_head)).ToString();
     }
     else
     {
      if(li_rand%2 ==0)
       li_rand=li_rand+1;
      ls_i=((char)(li_rand)).ToString()+((char)(li_asc +i +li_head)).ToString();
     }
     ls_code=ls_code+ls_i;
    }
    Random rdm3 = new Random(~unchecked((int)DateTime.Now.Ticks));
    int rand1 =(int)(rdm3.NextDouble()*9);
    if(rand1 ==0)
     rand1 =1;
    ls_code=((char)(rand1*10+li_head+40)).ToString()+ls_code;
   }
   else
   {
    int li_ret;
    li_len=sSource.Length;
    ls_code="";
    li_ret=Convert.ToInt32(sSource.ToCharArray(0,1)[0]) %10;
    for( i=2;i <li_len; i=i+2)
    {
     li_asc=Convert.ToInt32(sSource.ToCharArray(i,1)[0]);
     if(Convert.ToInt32(sSource.ToCharArray(i - 1,1)[0]) %2 ==0)
     {
      ls_i=((char)(li_asc + (i - 1)/2 + li_ret)).ToString();
     }
     else
     {
      ls_i=((char)(li_asc - (i - 1)/2 - li_ret)).ToString();
     }
     ls_code=ls_code+ls_i;
    }
   }
   return ls_code;
  }
 }
}

免责声明:文章转载自《一个比较牛的加密算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇fabric教程(1)linux命令每日一练习-rmdir mv下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql关于char和varchar的查询效率问题

看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试char(100) varchar(100) 300W条数据 从查询方面的角度来说,还是varchar毕竟靠谱 查询效率(在没有使用索引的情况下): varchar的字段查询要比char快...

WPF 使用用户控件UserControl来切换界面(二)

在上一篇文章中https://www.cnblogs.com/lizhiqiang0204/p/12367553.html我们使用按键Button来切换界面的,这次我们使用自定义的ItemsControl数据模板来切换页面。MainWindow.xaml如下 <Window.DataContext> <local:Mai...

进程隐藏的实现

通过Hook SSDT (System Service Dispatch Table) 隐藏进程1.原理介绍: Windows操作系统是一种分层的架构体系。应用层的程序是通过API来访问操作系统。而API又是通过ntdll里面的核心API来进行系统服务的查询。核心API通过对int 2e的切换,从用户模式转换到内核模式。2Eh中断的功能是通过NTOSKRN...

019C#中使用移位运算符获取汉字编码值

在进行移位运算时,当数值的二进制数每次向左移1位就相当于乘以2,当数值每次向右移一位就相当于除以2 private void button1_Click(object sender, EventArgs e) { try { char c...

Blocks学习笔记总结

  本文是对Apple的《Blocks Progromming Gude》学习的笔记总结。   对象时C级别的语法和运行时特性。和标准C函数很类似,但除了可执行代码外,还可能包含了变量自动绑定(栈)或内存托管(堆)。所以一个block维护一个状态集(数据),可以在执行的时候用来影响程序行为。Block用来作为回调特别有用。   你可以在MAC OS 10....

Windows注册表基础代码

Windows下对注册表进行操作使用的一段基础代码Reg.h: #pragmaonce#include<assert.h>#include<windows.h>classReg{HKEYhkey;public:voidopen(HKEYroot,char*subKey);//打开注册表键,不存在则创建voiddel(HKEYroot...