algorithm - 简单的加密算法

标签 algorithm encryption

我从事电梯项目只是为了好玩,它实际上是硬件。但我认为这更像是一个软件问题。我不需要这个功能,事实上它完全是多余的,但我很好奇所以我还是添加了它以便我可以学习 :P

我有一个 8 位地址、8 位数据总线和一个 8 位加密代码。 我有一个主设备和许多从设备。 主机知道从机的地址并知道加密代码。 奴隶也知道他们的地址和加密代码。

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

主机发送“y” 其中,y = function(data,encryption code) 从机收到“y”,可以通过data = function2(y,encryption code)提取数据

我尝试使用 AND、XOR、OR 等......以及它们的组合,但无法弄清楚。

我再次寻找简单的算法。如果您不介意,您可以帮我一个更大的忙,并解释一些关于我如何得出这样的解决方案/功能的理论。

非常感谢!

最佳答案

您可以使用 XOR cipher非常简单:

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

非常简单!

您可以升级加密并使其成为密码 block 链接,这意味着例如您有一个数据 D,您需要将其分成 block ,比如说大小为 B 的 block 。对于你做的第一个 block :

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

结果将成为下一个区 block 加密的关键:

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

enter image description here

原始数据为D={b0,b1.....bn}和加密数据现在是E={y0,y1....yn} 要解密加密数据,您需要以相反的方式进行操作!就这样!

关于algorithm - 简单的加密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219239/

相关文章:

encryption - 如何以编程方式解密 Vault 生成的 AES256-GCM 96 密文并导出 Vault key ?

python - 使用循环密码加密消息

java - 数组越界将一个字节数组添加到另一个

c# - 如何在 C# 中手动使用 PKCS5 (RFC 1423) 填充进行 AES 解密?

在其他多边形中找到最大的空矩形的算法

algorithm - Dual Contouring 算法中描述的 "Hermite Data"是什么?

python - python中的RSA加密和JS中的解密

与一或零不匹配的字符串模式匹配

java - 如何使用递归实现dfs?

algorithm - 以流行语言显示算法的网站?