目前我的研究目标主要放在全息加密算法上,所谓全息就是明文中的任意字节的变动将可能影响生成的密文中的任意字节。比如用在序列号算法中,两个相差一个字节的机器码将生成完全不同的序列号。这样使得破解者很难找到规律搞出注册机来。
对于长的明文,如文件等,可以分成定长度的小块,如8个字节,对这8个字节采用全息算法,生成另8个字节来。
具体思路如下(矩阵全息法):
如果我们将明文的8个字节用x1,x2,x3,x4,x5,x6,x7.x8表示:
密文的8个字节用y1,y2,y3,y4,y5,y6,y7.y8表示。
加密方法如下:
byte(y1)=k11*x1+k12*x2+k13*x3+k14*x4+k15*x5+k16*x6+k17*x7+k18*x8
byte(y2)=k21*x1+k22*x2+k23*x3+k24*x4+k25*x5+k26*x6+k27*x7+k28*x8
.....
byte(y8)=k81*x1+k82*x2+k83*x3+k84*x4+k85*x5+k86*x6+k87*x7+k88*x8
这样就有8*8=64个密钥,每个一字节,可叫作加密密钥矩阵。解密钥钥应为它的逆矩阵。
具体是不是这样的还需要验证一下。其中乘号也可考虑改成xor,不知能得到逆矩阵不。
这个算法还是非对称密钥的算法,再不知算法的情况下,可以公开加密密钥(当然知道
算法了就可以推出解密密钥就是逆矩阵)。加密后的密文如果别人不知道是用什么算法加密的,就不能解密,除非手持解密密钥。