我想制作一个简单的公钥(非对称)加密。它不需要是安全的,我只想理解其背后的概念。例如,我知道可以使用XOR创建简单的对称密码。我在stackexchange上的一个帖子中看到需要使用陷门函数,但我找不到太多相关信息。我想说,取一组字节,并能以某种方式分割它们以获得公钥/私钥。我理解共享秘密的想法。比如,我生成了256的随机数(并不随机:P),并将其分成200和56。如果我使用200进行XOR,则只能使用200进行解密。我希望能够随机地分割数字等来进行非对称加密。
我想制作一个简单的公钥(非对称)加密。它不需要是安全的,我只想理解其背后的概念。例如,我知道可以使用XOR创建简单的对称密码。我在stackexchange上的一个帖子中看到需要使用陷门函数,但我找不到太多相关信息。我想说,取一组字节,并能以某种方式分割它们以获得公钥/私钥。我理解共享秘密的想法。比如,我生成了256的随机数(并不随机:P),并将其分成200和56。如果我使用200进行XOR,则只能使用200进行解密。我希望能够随机地分割数字等来进行非对称加密。
好的,这只是一个简单的演示想法,基于加/模运算。
假设我们有一个模数值,例如256。这是一个公开已知的常见值。
假设您在区间[1-255]中生成一个随机的私钥,例如pri=133。将秘密密钥保密。
生成公钥,pub = 256 - pri = 123。此公钥(123)可以与全世界共享。想象一下,第三方不知道如何从公钥计算出私钥。因此,他们只知道公钥(123)。
来自公众的某个人想要向您发送经过加密的ASCII字节。他得到了字节,并通过模256运算将其与公钥相加:
encrypted = (input_value + pub) % modulto;
举个例子,我想要以加密形式发送给你字母 "X",ASCII码为88。因此,我进行计算:
(88 + 123) % 256 = 211;
我正在发送加密字节值为211给你。
你可以通过使用你的私钥相同的方案来解密它:
decrypted = (input_value + pri) % 256 = (211 + 133) % 256 = 88;
当然,这个例子中使用简单的生成对是薄弱的,因为有一种众所周知的从公钥生成私钥的算法,任何人都可以轻松地使用模数和公钥恢复私钥。但在实际的加密中,这个算法是未知的。不过理论上,它将来可能会被发现。RSA(算法)是整个互联网所基于的标准算法。
如果您的问题通常涵盖...软件算法...那么您就可以在此处提出您的问题!
- ruffin