简单加密算法

7

我正在做一个电梯项目,这其实是硬件方面的。但我认为这更像是一个软件问题。虽然我不需要这个功能,事实上它完全是多余的,但我很好奇所以我还是添加了它,这样我就可以学习:P

我有一个8位地址、8位数据总线和8位加密代码。我有一个主设备和许多从设备。主设备知道从设备的地址和加密代码。从设备也知道它们自己的地址和加密代码。

我想要一个非常简单的算法,使得:

主设备发送 "y",其中 y = function(data,encryption code) ;从设备接收 "y" 并通过 data = function2(y,encryption code) 提取数据。

我尝试了一些AND、XOR、OR等操作以及它们的组合,但无法解决问题。

再次强调,我正在寻找简单的算法。如果您不介意,您可以帮我一个大忙,并解释一些理论,以便我能够得出这样的解决方案/函数。

非常感谢!


简单而有效的加密将以库的形式出现,而不是你自己编写的东西。仅仅简单的加密可以采用 ROT13。 - minopret
XTEA是相对简单的加密算法,RC4也是如此,但正确使用它有点困难。 - CodesInChaos
1
一个非常简单的方法 - 发送 y = x XOR key,然后在另一端发送 x = y XOR key,但是那里不会有太多保护。 - Bernhard Barker
1个回答

19

你可以使用异或密码,这很简单:

E(x,key)=> y= x XOR key
D(y,key)=> x= y XOR key

非常简单!

你可以升级加密方式并将其改为分组密码模式,这意味着例如你有一份数据D,你需要将它分成块,设块的大小为B。对于第一个块,你可以这样做:

E(b0,key)=> y0= b0 XOR key

这个结果将成为下一个块加密的密钥:

E(b1,y0)=> y1= b0 XOR y0 .... E(bn,yn-1)=> yn= bn XOR yn-1

在此输入图像描述

原始数据为D={b0,b1.....bn},加密后的数据变成了E={y0,y1....yn}, 要解密加密后的数据,只需要按相反的方式操作即可!就是这样!


4
CBC是块密码的一种操作模式。您所描述的既不是CBC也不是加密。您只需要密钥来解密“y0”,所有其他块仅仅是混淆过的。 - Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接