您公司的安全负责人会担心您的PIN生成系统给您之后12345
。他也不是很欣赏您为自己付出的代价而开玩笑的太空球笑话,因此您被委托重写PIN生成器。由于它必须适合某些特殊的硬件,因此您必须使其尽可能小。
你的任务
- 您有两个输入-PIN数和PIN码的位数。
- 随机生成指定数量的指定大小的PIN 并打印出来。
- 即使不是统一概率,所有大小相同的有效PIN也必须能够打印出来。
但是,PIN有一些限制-这是无效的:
- 如果所有对都是相同的数字:(
114422
注意:显然,这将包括所有相同的数字PIN)。 - 日益线性销(MOD 10):
246802
。 - 3所有群体的键盘上的物理线路
1 2 3;4 5 6;7 8 9;bksp 0 enter;
:147369
。 - PIN可以从规则1和规则3完全分为几组。
- 如果所有对都是相同的数字:(
- 这是代码高尔夫球,因此以字节为单位的最短代码胜出!
@minxomat好点,将规则修改为包括两个组。从下半场开始,该值为
—
Maltysen,2015年
123
,但55432
会很好。
规则3是否包括对角线?
—
马丁·恩德
具有讽刺意味的是,这种所谓的“安全”销的定义仅减少了攻击者可能不得不蛮力使用的销数量!
—
DankMemes
规则2的最短长度是多少?
—
丹尼斯
55123
)?