当前位置:  开发笔记 > 编程语言 > 正文

生成用户友好代码

如何解决《生成用户友好代码》经验,为你挑选了1个好方法。

我正在研究生成随机人类友好代码的方法,但不能(容易)猜测.这将用于赠送奖品(想想独特的折扣代码).我们要产生大约50k.有没有标准的方法/算法来实现这一目标?我正在考虑使用GUID并应用CRC.这是一个坏主意吗?

如果重要,请使用.netframework 3.5.



1> Norman Ramse..:

我通过从MD5校验和中取出位并将它们用于索引到单词列表中,生成了人性化的校验和.例如:

: nr@yorkie 7012 ; md5words /home/nr/.profile  
overextend moonscape cucumbers outsmarting

代码是大约40行的Lua,不包括单词列表,它包含在脚本中,以便在每个系统上产生相同的结果.


编辑:

在您的应用程序中,您希望生成50,000个密钥.你可以这样做:

for ((i=1; i<=50000; i++))
do 
  echo "this is my secret phrase $i" | md5words
done

将此过程与不同的密码短语一起使用可生成以下密钥:

Chisinau Phaethon customs Martina
commensurate freewill logical cambered
kamikazes Creighton Dobro's Alonzo
medallion's jesters goofy keystones
Anaxagoras martial Medina's Hon's
acclimatized chirping Cleopatra's mascaras
buoyant nuclear lumbering disagreements
dampens Philby cloak drollness

这些键难以伪造:单词列表上有近100,000个单词,因此有10 ^ 20个可能的4个单词序列.如果您有100,000个代码,那么某人能够随机猜测代码的几率是10 ^ 15中的一个.如果你对允许人们尝试的按键数量设置一个限制,比如每0.3秒说一个按键,你就不会有问题.

如果我在你的应用程序中部署这个想法,我会将单词列表修剪为更短的内容,也许只有10,000个非常常见的单词.即使在失去10 ^ 4的因素之后,这些数字对你有利 - 猜测一把钥匙的机会将是千分之一.


更新:2011年8月,这项技术成为xkcd漫画的主题.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有