[凌波微步]Mispand加密法
流梦人灵异风 发表于2007年04月28日 11:29 阅读(5) 评论(2)
分类: 描述哲学 举报
.有很好的无关性,凌乱性和抗干扰性...........
.五份三余度(byte,bit)
.多通道分流
,多随机池,多链跟随系统
-----------单链系统------------------
.密码->入口算法,同时布置Seed[n]的初始值(比如考虑口令/文件名/生成时间和解密时间/算法路线图Seed随机流的一个算法)!
.入口旋风算法,一个字节的旋风算法产生最多256个版本,随机数代表一个随机版本,一个明文有至少256个可能的密文版本.....
.凌波微步算法(位置随机+密文随机)(随机池数据+异或+数据流+异或)(一个字节被干扰,不影响下一个字节)
.特别的军用"微移步伐算法"(微步算法)
.根据明文位置,凌波微步可以得到在Mispand空间中的凌波算法的空间位置,该位置如有占位,则使用较复杂的"微步算法"(需要一个占位标志标志池)
.跳跃算法
.入口即跳跃
.空间规划块算法
.二次Mispand算法
.多次自干扰旋风算法,每个自干扰点,插入特征字符'*',翻译时要作256次测试,测试出'*',但破译者就是天文数字....
(可能有两次以上测试,字符都翻译成'*')
.膨胀随机填充算法(用纳秒值亦或流随机字)
注:由于参数很多,所以凌波微步算法的变形很多,几乎每个人都可以有一个自己的算法和exe版本,这才是关键
--------------C 语言随机池------------------------------------
#define MSTR 0x015a4e35L
#define B 1
#define SPACE 256
static long Seed=1;
/* 以上均可变化 */
unsigned int RD(void){
Seed=Seed*MSTR+B; /* Seed=Seed*MSTR|B */
return (Seed>>16)&0xfff%SPACE;
}
多次自干扰旋风算法,可以插入'**',以求稳定(首值为CPU的计数器随机值,欺骗用,要遍历m个算法,找出下两个跳跃的char值都为'*')...
根据算法,您可以得到链n的位置,凌波微步密文空间位置,随机数A,A亦或明文即密文,
由于在口令和算法路线图知道的情况下,只要注意空旋次数和加密方法版本的改变等等,是可以复原出A,A亦或密文即明文(加入其他一对一加密方法也可以,(比如先解成半明文在用其他解密exe解一次))
我的博客:
http://user.qzone.qq.com/444619605
----------------------------------------------------------------------------
用"凌波微步"算法加密密文,使用种子数组Seed[n],n个随机池,m个交叉随机算法,把随机算法动态m写入"算法路线图钥匙文件",这样,密文就很难被单独的exe文件破译了...
注:交叉算法m=调用随机池n',n''和Seed+=k'和调用交叉算法m',m''或交叉算法的函数指针数组L'(不引起重复自调用)的
"排列组合"大家可以破解TC的rand(int) 函数看看
static long Seed[N]; //32bit
int Rand(int n)
{
Seed[n]=0x015a4e35L*Seed[n]+1;
return ((int)(Seed[n]>>16)&0x7fff);
}
int Rand1(int n)
{
Seed[n]=(0x015a4e35L*Seed[n])|1;
return ((int)(Seed[n]>>16)&0x7fff);
}
另外,
.跳跃算法,配合初始位置和n%61==1位置,置入插入随机数,可以作为版本数或空旋次数
.流位置%n==0,那么Seed[n]++;
.或者特征字常用字跟随深度额外跳跃(由于有自相关,抗干扰能力差点,特别是常用字位置被干扰时)
.自纠正
.小麻烦留给巨型机,大麻烦留给破译者