相关疑难解决方法(0)

创建小(<10位),而不是(非常)安全"哈希"的想法

我正在开发一个在线活动票务系统,用户可以自行打印他的票据并出现在将被扫描的事件(条形码),理想情况下,这个人会进入.我的问题是如何创建一个满足以下要求的"票证代码":

  • 每个"票证代码"需要彼此充分不同(即不按顺序编号)
  • 理想情况下,车票将与中心数据库,以避免重复使用进行检查,但它需要能够工作过太行,在这种情况下,系统必须检查是否有"有效"票代码和它没有在使用门.
  • "票证代码"必须足够小,以便在需要时方便键入
  • 持票人只需要门票进入(即没有身份证检查)

数据范围非常小,4天内只有大约20个活动,每个活动约5,000张门票(约100,000个不同的门票代码)

现在我有几个字段没有打印在故障单上,用户不知道我可以使用它来编码部分"票证代码",所以我可以使用EventId,OrderId,EventDate和一些盐来创建一个小的"哈希"部分代码(想法?),但我仍然坚持顺序或GUID(太长)的票证ID

那么关于如何做到这一点的任何想法或指示?

encryption hash encode checksum

16
推荐指数
3
解决办法
7628
查看次数

人类可读的GUID

我正在写一个小型系统,允许我通过在我们的网站上生成可兑换MP3的优惠券来销售乐队的音乐.

优惠券需要用户输入的代码.代码需要具备以下特性:

  1. 在长度和内容方面有一定程度的人类可读性,以防止用户沮丧和数据输入错误.
  2. 给出一个优惠券代码,而不是猜测另一个优惠券代码.

如果我使用GUID,我关注第1点.如果我使用递增整数,我关注第2点.中间必须有一些快乐的媒介,对吧?我想也许这项工作已经完成,并且有一个理想的解决方案等着我.如果没有这个,我想我会使用随机的字母数字字符串,或者只是字母(为了清楚起见,不包括I和O),并且应用程序块IP地址失败了X次,这表明可能的蛮力攻击.如果我使用它,字符串有多长,X的值有多大,为什么?

谢谢你的帮助!


更新:我没有完全明确这个方法:我将生成用于打印的凭证代码列表,然后在演出后输入"已售出"代码.因此,我认为像校验和这样的元素不像在不使用验证服务器的软件密钥中那样.

language-agnostic

11
推荐指数
5
解决办法
3340
查看次数

使用auto_increment生成PHP短唯一ID?

我想生成一个简短的唯一ID,而不必检查冲突.

我目前做这样的事情,但我目前生成的ID是随机的,并且在循环中检查冲突是令人讨厌的,并且如果记录数量显着增加将会变得昂贵.

通常担心碰撞不是问题,但我想要生成的唯一ID是一个短的唯一字符串5-8个字符,字母数字,就像tinyurl一样.

编辑:我想从5个字符开始,如果我达到6000万条目,那么去6 ...等等.

为此,我想我可以使用对用户隐藏的auto_increment值,而是用一个MD5或其他方法来呈现它们以从中生成唯一的字符串.

生成的字符串看起来不应该是线性的,所以简单地将auto_incremented ID转换为base 36[0-9A-Z]有点过于简单了,但是这样的函数就是我要用的东西.

编辑:安全性不是问题,因为这不会用于保护信息.它只是更长字符串的快捷方式.谢谢.

感谢您的建议,抱歉延误.牙医..

php mysql unique auto-increment

7
推荐指数
1
解决办法
4826
查看次数