设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 546|回复: 2

[转帖] 一个密码生成程序 [复制链接]

Developers

一白遮三丑 一胖毁所有

Rank: 8Rank: 8

帖子
1987
精华
7
声望
15388 点
金币
2506 Mold
被赞许
114 次
注册时间
2009-6-23

热心会员奖 黑暗使者 最佳贡献奖 星界财团 Modchina元老 精华帖制造者 懒人勋章 可爱小猫

发表于 2011-12-30 22:26:19 |显示全部楼层
本帖最后由 大河 于 2015-8-20 00:37 编辑

                本篇算是上一篇的续集,上次说了中国各大网站密码泄露事件,对于我这种各个网站密码都是一样的人,泄露一个网站可算是把所有网站密码全泄露了。所以写了这么个小程序,目的是:只要记住一个主密码,然后由程序帮你为每个网站生成不同密码,当你需要登录时只要在此程序中再次输入你的主密码,就可以得到密码了。看图:


其实这个程序思路很简单,就是把网站域名和你的主密码混合在一起。然后用windows xp系统中自带加密库Cryptdll.dll,使用其中MD5算法加密。加密之后得到一个128bit结果,利用一个字典和这个结果产生适当长度的密码。本想也放到Google Code上去,但想想这个太简单,又没什么实用性也就作罢。
说说我这个程序吧,希望可以抛砖引玉。
我是用VS2010建了个MFC-Dialog程序,只加了几个控件和处理函数。这里最值得一提的是我使用了Cryptdll.dll中的MD5算法(如果要最大程度保证安全性还是需要自己写一个单向散列函数),这个算法共3个函数:MD5Init,MD5Update,MD5Final,依次使用就可以得到结果。不过这几个函数是没有对应头文件的,要想使用必须用LoadLibrary或者GetProcAddress函数从动态链接库中加载。具体的用法可以看看MSDN上Message Digest页面的例子,我基本上就Copy这个。
得到的128bit结果是用unsigned char数组表示的,也就是16个元素。这写元素值是不确定的(很可能是非字符),不能直接用来当密码。我们需要把这16个元素转换成可以显示的字符串。我的方法是建立一个字典,此字典相当于一个“密码可用字符列表”,所有希望在密码中出现的字符都列在里面(我的字典仅包含数字和大小写字母)。然后用之前16个元素中每个元素对字典长度取余,取余的结果作为索引,将此元素转换成的对应于字典中的字符。这样循环16次我们就得到了一个16个字符的密码了,而且它随机使用字典中的字符,基本不会出现有意义的字符串,保密性良好。
可执行程序:点此下载
源代码:点此下载
我这个程序没花心思,写得很简单,其实很多方面可以做得更人性化。例如能够自动检测所访问网站的域名,自动填写域名一栏,那就方便多了。


                        

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
168
精华
0
声望
1886 点
金币
362 Mold
被赞许
3 次
注册时间
2010-7-14
发表于 2011-12-30 23:18:23 |显示全部楼层
md5加密不可靠了,很容易破的...

使用道具 举报

Super Moderator

MODCHINA 之 土匪

Rank: 10Rank: 10Rank: 10

帖子
1231
精华
6
声望
4643 点
金币
1276 Mold
被赞许
90 次
注册时间
2007-5-4

MTT职员 Modchina元老 精华帖制造者

发表于 2011-12-31 22:09:12 |显示全部楼层
个人应该先生成MD5码,然后加入一张位图,,最后按照其他算法推出新密码.这样的加密应当是不错的.

不过很感谢大河对于自己程序的分享~谢谢啦~

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部