Algorithm 可逆短密码序列

Algorithm 可逆短密码序列,algorithm,security,authentication,Algorithm,Security,Authentication,我想从一个可以反转的字符串中创建一个人类可读的短而唯一的序列(允许从序列中获取字符串) 目标是能够通过postmail接收的序列对用户进行身份验证 我正在考虑使用只有服务器拥有的符号密钥加密源字符串(“userId+timestamp”)。以便能够取回源字符串。但是我只想得到一个短的8个字符的字母数字字符串(base36),比如“QCF9TF4S”,而不是很长的密码文本 这可能吗?8*log_2(36)~=41位。这意味着黑客仅仅猜测正确的可能性比可以忽略的要高。您可以在创建“postmail”

我想从一个可以反转的字符串中创建一个人类可读的短而唯一的序列(允许从序列中获取字符串)

目标是能够通过postmail接收的序列对用户进行身份验证

我正在考虑使用只有服务器拥有的符号密钥加密源字符串(“userId+timestamp”)。以便能够取回源字符串。但是我只想得到一个短的8个字符的字母数字字符串(base36),比如“QCF9TF4S”,而不是很长的密码文本


这可能吗?

8*log_2(36)~=41位。这意味着黑客仅仅猜测正确的可能性比可以忽略的要高。您可以在创建“postmail”时存储一个随机序列,然后通过保存一个表将其映射到特定的用户帐户;这样,您至少可以最小化目标(在特定时间需要身份验证的用户)。顺便说一句,这不是一个编程问题,这类问题最好先问一下。虽然41位对于加密目的来说很小,但我认为2万亿值的空间没有问题,只要猜测是合理昂贵的,并且空间足够稀疏(人类选择的密码只有那么多的熵;这不是一个完美的比较,因为一个帐户只有一个密码,并且有许多有效的令牌,但它有助于估计数量级)。您的方法的问题是压缩。您的输入可能大大大于输出。加密无法解决这一问题。用户ID有多长,时间戳需要多少字节?@RobNapier没有空间放置IV(重播攻击)因此,随机密文命中有效用户ID+时间戳的概率似乎大于1/2万亿,这就是为什么随机和限制唯一字符串的有效性对我来说似乎是一个好方法(当然,最好是在TLS上使用)。