- 主题:介绍一种加密算法 (转载)
【 在 ylh1969 的大作中提到: 】
: 发信人: ylh1969 (没谱), 信区: Algorithm
: 标 题: 介绍一种加密算法
: 发信站: 水木社区 (Thu Dec 18 16:54:15 2025), 站内
: ...................
原文2楼:
*p = t2[(t3[(t1[(*p+n1)&MASK]+n2)&MASK]-n2)&MASK]-n1;
这一句,是整个加解密的核心算法。老祖宗传下来的,旋转转轮,久经考验的,一个字不敢改。
但是我自己推导只能到:
*p = t2[(t3[(t1[(*p+n1)&MASK]+n2)&MASK]-n2)&MASK];
不知道为何要-n1。
t1是编码轮,t2是t1的反查表。t3是反射轮。n1是t1的相位(转动角度),n2是t3的相位。
t1转256步t3转1步。t3转256步回到原位。共63+1K步。所以序列长度是63+1K。
t2不能转,它是t1的固定反查表。所以,在查t2的时候,必须把转动角还原回去。
里边+n1 +n2是转动,-n2是还原。从t2中查出来的,就是密文了。
明文+n1查t1,结果+n2查t3,t3的结果-n2查t2,得密文。
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
dsw dsp 这是俩老朋友啊
--
FROM 183.241.185.*
与异或运算比,优点在哪?速度与异或运算比如何?
【 在 ylh1969 的大作中提到: 】
: 原文2楼:
: *p = t2[(t3[(t1[(*p+n1)&MASK]+n2)&MASK]-n2)&MASK]-n1;
: 这一句,是整个加解密的核心算法。老祖宗传下来的,旋转转轮,久经考验的,一个字不敢改。
: ...................
--
FROM 119.233.229.*
比异或慢。
异或的破解方法,如果知道一段明文和密文。异或一下就得到密钥。
二者都是序列密码。异或要有足够长的序列,一次一密才安全。
你可以设想通信双方,客户端和服务器,一个服务器可以与许多的客户端对话。那么这么多对会话,怎样实现共享一个规模巨大的,一次一密的密码本?即使在一个会话里,怎样在无数个交互中使用一次一密?所以,异或法,不可能在广泛的通信场合中使用。
这个ENIGMA不可能从已知明文和密文猜出密钥。图灵就猜出来过(它那个密钥,就是3个字母,好猜,我们这个不是),但是这次改进了,图灵也猜不出来了。
它可以用较短的密钥,生成一个转轮机,本转轮机可以生成长达63+1K的序列(原始的ENIGMA是17576的序列)。如果明文很长,序列将被循环利用。
见原帖3楼的实例:
int main(int ac,char *av[])
{
char buf[131702];//128K,用于测试序列周期
int len,i,len1;
ENIGMA t;
ENIGMA2 egm;
struct timeval beg,end;
enigma1_init(t,"永 垂 不 朽,Enigma");//生成转轮,这就是一个测试,用汉字做密钥真不是好办法,双方不是一个字符集就瞎了
。。。。。。
在每次会话开始,双方约定一个密钥,各自生成相同的转轮,就可以在一个会话生命期内反复使用这个转轮,效率很高的算法。
这个算法,在网络通信领域很有价值。一般使用的DES,AES等等是分组密钥,加密要凑整个分组,在通信包头里要指明在整个数据包里有多少是有效字节,用于剔除填充字节。在已经应用中的包头里添加参数信息,会导致整个系统的颠覆式升级(新旧协议不兼容)。所以在一个旧系统升级加密功能,用分组密钥是不方便的。
【 在 callmebbser 的大作中提到: 】
: 与异或运算比,优点在哪?速度与异或运算比如何?
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
举个例子,如果采用128bit的密钥,就是16字节,这在分组密钥中是不错的了。
异或加密一段明文。如果发现了这个明文的一部分,跟密文异或一下,就会发现16字节为周期的规律。就可以解读其它部分。如果继续使用这个密钥,就等于公开的啦!
如果采用很长很长的密钥,分发,运用和管理都很麻烦。
ENIGMA,用比较小的空间(256×3),制造了63+1K的序列。在这么长的字节序里,不存在明文密文的规律性对应关系。
而且,可以采用更短的密钥,扩散成这个768byte的转轮机。
传输,分发,管理都很方便。
enigma1_init(t,"随便一个128bit密钥");就可以生成一个转轮,具有63+1k的序列长度。而且允许使用任意长度的密钥,加密速度和安全性与密钥长度无关。明文密文间的关系,不能反推转轮,更不能反推密钥。
在一段不长的时间,如一个会话的生存期内使用,不会有明显的安全风险。
当然,它依然具有可窥测性,所以,在这个软件包里,提供了加强版。如何窥测以及如何降低其可窥测性,可以继续讨论。
【 在 callmebbser 的大作中提到: 】
: 与异或运算比,优点在哪?速度与异或运算比如何?
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
我是不太懂加密算法,看一下AI的评价吧
【 在 ylh1969 的大作中提到: 】
: 【 以下文字转载自 Algorithm 讨论区 】
: 发信人: ylh1969 (没谱), 信区: Algorithm
: 标 题: 介绍一种加密算法
: 发信站: 水木社区 (Thu Dec 18 16:54:15 2025), 站内
:
: 附件(72.3KB) ENIGMA-b.rar
--
FROM 221.216.137.*

太感谢啦,做了一个客观的评价。
不过,我还要几句话要说。
这个的确是商用。为的是简便快速解决一般通信过程中的加密需求,抗攻击性仅限于在会话存续期间。并非需要历史考量的战略性数据,经过一段时间,即使破译了,基本上这些信息也没啥用了。
经测试,enigma2的加密解密速度,对于128K的数据包,速度是128des的9倍,128aes的3倍。通信过程一般不会有太大的数据包。所以速度不是大问题。
【 在 hotfix 的大作中提到: 】
: 我是不太懂加密算法,看一下AI的评价吧
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
你这个速度测试感觉不太靠谱
AES现在都是硬件直接支持的. 很难相信你会比AES快
【 在 ylh1969 的大作中提到: 】
: 太感谢啦,做了一个客观的评价。
: 不过,我还要几句话要说。
: 这个的确是商用。为的是简便快速解决一般通信过程中的加密需求,抗攻击性仅限于在会话存续期间。并非需要历史考量的战略性数据,经过一段时间,即使破译了,基本上这些信息也没啥用了。
: ...................
--
FROM 221.216.137.*
哦,我说的是软件,openssl里的。咱们一般商用网络应用,不会去买加密卡吧?经济性问题。如果是网络应用,服务器用加密卡,客户端还是要用软件,还得保证二者兼容。具体加密软件里边会有很多细节的。
提供给一般码农做通信软件用的。
我真是希望能有一大堆数学家进行安全评估,可惜我没有那么多钱。至于反推转轮的可能性,确实需要做数学评估。
【 在 hotfix 的大作中提到: 】
: 你这个速度测试感觉不太靠谱
: AES现在都是硬件直接支持的. 很难相信你会比AES快
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*