Database 如何存储和验证PIN码

Database 如何存储和验证PIN码,database,security,authentication,encryption,hash,Database,Security,Authentication,Encryption,Hash,我正在开发一个scratch卡凭证pin应用程序 12位引脚将由伪随机工具生成 pin和序列号存储在数据库中进行身份验证 用户键入pin以使用服务,然后通过扫描pin列,对照数据库检查pin以进行验证 在极少数情况下也应解码pin码 问题 如果pin是加密的,则很难查询数据库进行验证。因为搜索是基于pin的。 如何存储pin码以便 它可以是唯一的,并且在验证期间匹配 只需加密pin码并将其存储。当用户输入pin进行验证时,还要对其进行加密,并将加密存储的pin与用户输入的加密pin进行比较。如果

我正在开发一个scratch卡凭证pin应用程序

12位引脚将由伪随机工具生成 pin和序列号存储在数据库中进行身份验证 用户键入pin以使用服务,然后通过扫描pin列,对照数据库检查pin以进行验证 在极少数情况下也应解码pin码 问题 如果pin是加密的,则很难查询数据库进行验证。因为搜索是基于pin的。 如何存储pin码以便

它可以是唯一的,并且在验证期间匹配
只需加密pin码并将其存储。当用户输入pin进行验证时,还要对其进行加密,并将加密存储的pin与用户输入的加密pin进行比较。如果在极少数情况下需要解码pin码,请使用可解码加密。如果用户丢失或忘记了旧pin,我建议不要这样做,并强制用户更新到新pin。

请解释为什么加密pin会很困难。如果pin加密,我无法根据加密值搜索数据库,因为大多数加密在重复时都不会返回准确的值,与哈希不同的是,在比较值之前尝试解密所有行将是低效的,并且在一个约200000行的表中执行时会花费很长时间显示关于保存加密值而不是保存实际值。。因此,在将插入的pin与db进行比较之前,首先对插入的值进行加密。。我不是加密方面的专家,但是如果你使用类似SHA/DES的东西,只要你使用相同的密钥,它就会在重复时返回准确的值。这个答案把加密/解密编码/解码哈希的术语搞乱了,不应该作为参考。