算法介绍:
现有n*n矩阵M,N和P,P=M*N。如果M(或N)的行列式为零,则由P和M(或P和N)计算N(或M)是一个多值问题,特别是M(或N)的秩越小,N(或M)的解越多。
由以上问题,假设Tom和Bob相互通信,现做如下约定:
1. 在正式通信之前,二人约定一个条件奇异矩阵M。
2. Tom和Bob各自选取一个n*n的随机矩阵作为他们的私有密钥,设Tom的为A,Bob的为B。
3. 然后Tom计算矩阵Pa=A*M作为他的公钥,Bob计算矩阵Pb=M*B作为他的公钥。
4. 当Tom向Bob发送消息时,计算加密矩阵K=A*Pb,用K对消息加密后发送到Bob端,Bob收到消息后,计算解密矩阵K’= Pa*B,由以上代数关系可以看出,K= K’,也既加密和解密是逆过程,可以参照对称加密标准AES。
5. Bob向Tom发送消息时,计算解密矩阵K= Pa*B,加密。Tom收到消息后计算解密矩阵K=A*Pb,原理同上。
很对不起,上述算法经过论证,发现了致命的错误!