【发布时间】:2010-10-22 13:40:07
【问题描述】:
如果你以前读过这个帖子 - 忘记我写的所有内容,我写它的时候一定是喝醉了。我要重新开始:
我目前正在开展一个项目,我们将使用某种算法来验证用户输入。需要考虑三个方面;
客户端 - 浏览我们的网页
公司 - 我们,处理客户的请求
第 3 方公司 - 处理客户消息
在我们的网页上,我们将向客户展示有关产品的一些信息。如果他/她想了解有关产品的更多信息,他必须联系第 3 方公司并说明产品代码(本身不是唯一的,但也不常见)。作为回报,客户将收到来自第三方公司的一些其他代码,他应该在我们的网页上输入这些代码,我们将在其中验证代码以供批准。
如果我们公司没有与第 3 方公司互动,那最好。纯加密是不可能的,因为它会生成一个太长的字符串。我们是通过短信来做的,所以代码必须很短。
到目前为止我的想法:
对于每件产品,我都会在基数 16 (0-f) 中生成一个有点独特的代码(它是否唯一并不重要)。想要了解有关产品的更多信息的客户向第三方公司发送一条短信,说明产品代码。作为回报,客户端收到相同的代码,但数字被乘以(可能乘以 2)并转换为基数 36。除此之外,最后一个字符被添加到代码中,即控制号,以使代码对 Luhn 有效以 36 为基数的算法。用户输入收到的代码,我们公司在服务器端根据产品代码验证它(根据 Luhn 验证,除以 2 并切换回以 16 为基数)。
这听起来相当安全和适当吗?当三方不需要通信时,三方发送消息是一种有效的方式吗?
抱歉编辑,但当我写第一篇文章时,我的想法一定在别处。
【问题讨论】:
-
我认为您需要稍微澄清一下您的问题。校验和和其他哈希码的想法是避免任何给定的两条消息具有相同的代码。安全哈希码试图尽可能难地找到具有相同代码的任何两条消息,因此我看不出您如何期望安全性,同时生成具有与初始产品代码匹配的校验和的答案代码是可行的。为什么还需要这么复杂的方案?
-
那么你能或不能控制第三者的行为吗?
-
因此,如果您选择不以任何方式影响第 3 方所做的事情,那么您完全依赖于他们为您提供的选项。他们为您提供了哪些选择?卢恩算法是其中之一吗?
-
我意识到这实际上是一种加密方式 - 但不是很安全:)
-
我不确定我是否了解您要防范的威胁场景 - 您不想发生什么?您是否在不联系第三方的情况下对其进行验证?
标签: algorithm language-agnostic checksum adler32 luhn