在安全代码中需要不同的字符

时间:2012-01-07 15:59:21

标签: php encryption hash passwords

示例安全码:

a35sfj9ksdf

如何向用户询问其安全代码的多个字符(例如,第一个,第四个和第九个),然后检查这些字符?主要的困难在于如何以加密形式存储安全代码 - 如果我要单独存储每个字符,那么加密将非常容易打破。

3 个答案:

答案 0 :(得分:1)

此处和How to store and verify digits chosen at random from a PIN/Password都未描述的可能性是:

  • 创建一个与seucrity代码长度相同的随机盐(此处 11)
  • 与用户一起存储盐
  • 对于安全代码的每个字符,替换相应的char 盐与安全码中的char并安全地哈希
  • 将这些哈希值存储在用户

现在您必须为长度为n的安全代码存储可管理数量的n + 1个字段,并且仍然可以验证单个(位置,字符)元组

答案 1 :(得分:0)

使用substr()?

substr("a35sfj9ksdf", 0, 1);

那会返回'a',第一个字符

substr("a35sfj9ksdf", 4, 1);

这将返回4,第5个字符

请输入$ n字符并使用

substr("a35sfj9ksdf", $n-1, 1);

答案 2 :(得分:0)

您可以按照这些步骤进行操作,

  1. 将所有需要的字符存储在数组中

  2. 生成n(用户代码的长度)随机数的数量,其中每个数字代表数组的字符。

  3. 然后将新生成的字符连接成一个字符串

  4. 使用会话存储字符串,当用户询问只是将用户代码与会话匹配时

  5. 您也可以使用类似的方式制作简单的验证码服务