一尘不染

双向密钥加密/哈希算法

algorithm

我对这类事情没有经验,所以我什至不确定关键字(因此没有标题)。基本上我需要双向功能

encrypt(w,x,y) = z

decrypt(z) = w, x, y

Where w = integer 
      x = string (username)
      y = unix timestamp

z =是8位数字(可能包括字母,尚不存在规范。)

我希望z不容易猜测和容易验证。速度不是一个 问题,安全性也不是。跟踪一对一关系是主要要求。任何资源或方向将不胜感激。

编辑

感谢您的回答,学到了很多东西。因此需要澄清的是,只有8个字符是唯一的硬性要求,并且具有链接W <-> Z的能力。用户名(Y)和时间戳(Z)将被视为锦上添花。

如果可能的话,我想用数学的方式而不是查找一些数据库。

如果今晚必须完成此操作,则可以找到合适的哈希算法并使用查找表。我只是想扩大我对这类事情的理解,看看我是否可以用数学方法做到。


阅读 241

收藏
2020-07-28

共1个答案

一尘不染

您只需要使用私钥加密(w,x,y)的序列化即可。使用相同的私钥对其进行解密。

在任何情况下,z的大小都不能像您那样简单地定界,因为它取决于序列化的大小(由于需要两种方式,因此可以进行压缩,取决于熵)。

而且,您并不需要哈希函数,因为它显然会丢失一些信息,并且您将无法将其反转。

编辑:由于z的大小是一个硬限制,因此您需要将输入限制为8个字节,并选择使用64位(或更少)块大小的加密技术。BlowfishTriple
DES
使用64位块,但是请记住,这些算法没有得到与AES相同的审查。

如果您想要真正简单而又不安全的东西,只需xor输入带有密钥的输入即可。

2020-07-28