找回密码
 点一下
楼主: KickedByOthers

[Flash游戏]看看谁的名字更厉害!

  [复制链接]
发表于 2007-1-3 23:33:07 | 显示全部楼层
引用第195楼hackwaly2007-01-03 18:58发表的:
很有意思吗,非得虚荣一把吗!破坏别人的快乐真的让我看不过去了!
有一句话叫做:"任何破解工作只是时间上的问题."
这并不能证明你们多有实力!呵呵~~
当有人骂别人素渣的时候。那个人本身就素渣。
嗯嗯。所以呢。水区才是多么的自由。

技术本身并不需要证明什么。
当然如果你想证明什么,前提是你要有技术。

难道这个是破坏别人的快乐么?
回复

使用道具 举报

发表于 2007-1-4 00:14:29 | 显示全部楼层
让别人痛苦就事我的快乐~

以上
回复

使用道具 举报

发表于 2007-1-4 00:35:51 | 显示全部楼层
By 邪恶的番茄。
回复

使用道具 举报

发表于 2007-1-4 01:06:36 | 显示全部楼层
555...
回复

使用道具 举报

发表于 2007-1-4 12:07:08 | 显示全部楼层

尝试改进

为什么深蓝能打败人类冠军
而围棋程序连业余高手都打不过
这是因为围棋的胜负判定没有那么直观

所以好的游戏规则应该像围棋那样
就算明明白白告诉你规则
你也不可能穷举出最优解



先规范一下术语: 全名 = 前缀 + 连接字 + ID
(注意连接字现在只能是“的”或“犯”,并不需要穷举所有的汉字)

为什么穷举前缀有效?
这是因为MD5的全局特性
只要前缀改变,全名的MD5就截然不同,人物属性也截然不同
所以我们没必要破解MD5,只需穷举前缀就能找到很NB的名字

建议将前缀与ID挂钩
如果ID足够弱
那么穷举出最强前缀也没用



比如可以这样设计:

将计算人物属性作为一个两步过程:
[Step 1]
根据全名,计算得出人物属性A0
去掉第一个字符,计算得出人物属性A1
再去掉第一个字符,计算得出人物属性A2
再去掉第一个字符,计算得出人物属性A3

[Step 2]
最终属性是上面4个属性的平均值:(A0 + A1 + A2 + A3) / 4

比如现在的ID为“name”
前缀为“前缀”
那么全名是“前缀name”
属性计算:
[Step 1]
计算出“前缀name”的人物属性A0
计算出“缀name”的人物属性A1
计算出“name”的人物属性A2
计算出“ame”的人物属性A3
[Step 2]
最终属性是上面4个属性的平均值:(A0 + A1 + A2 + A3) / 4
可看出ID本身的属性占了50%



一个前缀字符:ID本身的属性占了75%
两个前缀字符:ID本身的属性占了50%
两个前缀字符+一个连接字:ID本身的属性占了25%


然后再设计成:连接字的选择与等级挂钩
例如:
0级能使用“的”
5级能使用“犯”
10级能使用“之”
15级能使用“の”
……




既然现在穷举前缀没用,那么直接穷举ID可行么?

由于现在的规则,所以名字至少是四个字符
注意每个字符都是16位Unicode码
所以运算量为:(2^16)^4 = 2^64 = 18446744073709551616
18.446E或1844亿亿


现在的处理器都是上GHz的
假设现在能在1秒内穷举1G(10^9 = 10亿)个ID
那么穷举四个字符的ID需要的时间为:18446744073709551616 / (10^9) = 18446744073.709551616 (秒)
分钟:18446744073.709551616 / 60 = 307445734.56182586026666666666667
小时:307445734.56182586026666666666667 / 60 = 5124095.5760304310044444444444444
年:5124095.5760304310044444444444444 / 365.25 = 14029.009106175033550840368088827


需要一万四千年才能将四个字符的ID穷举完

五个字符呢?
还要乘上 65536:14029.009106175033550840368088827 * 65536 = 919405140.78228699878787436306936
即九亿多年


而一般人用的ID肯定是超过四个字符,是不可能在有生之年看见穷举结果的

所以完全凭运气
回复

使用道具 举报

发表于 2007-1-4 12:25:15 | 显示全部楼层
其实这样做还是米用...
我可以先穷举2个字符的满足name和ame都是高属性的id,
在穷举的id中再穷举前缀id和缀id都是高属性的id...

如果强制要求id 是4个字符,我们实在没必要全部穷举所有的,人工定下2个字符一样可以...
回复

使用道具 举报

发表于 2007-1-4 12:51:03 | 显示全部楼层
那改成计算8个不就行了
回复

使用道具 举报

发表于 2007-1-4 13:10:23 | 显示全部楼层
什么计算8个...
回复

使用道具 举报

发表于 2007-1-4 13:25:22 | 显示全部楼层
[Step 1]
计算出“前缀namename”的人物属性A0
计算出“缀namename”的人物属性A1
计算出“namename”的人物属性A2
计算出“amename”的人物属性A3
计算出“mename”的人物属性A4
计算出“ename”的人物属性A5
计算出“name”的人物属性A6
计算出“ame”的人物属性A7
[Step 2]
最终属性是上面8个属性的平均值:(A0 + A1 + A2 + A3 + A4 + A5 + A6 + A7) / 8
回复

使用道具 举报

发表于 2007-1-4 13:41:18 | 显示全部楼层
...其实还是可以1个字符一个字符筛选
并且也没有必要全部穷举
而且这样就强制要求ID>8个字符很不爽...
回复

使用道具 举报

发表于 2007-1-4 13:57:06 | 显示全部楼层
少于8个的,在计算时自动补足

比如“name”变成“namename”
比如“ame”变成“ameameam”
比如“me”变成“memememe”
比如“e”变成“eeeeeeee”
回复

使用道具 举报

发表于 2007-1-4 14:07:59 | 显示全部楼层
其实还素米解决问题...
一个ID=S

1 穷举1个前缀 AS 记下一定数量符合要求的ID...
2 根据AS穷举第2个前缀 BAS 记下一定数量符合要求的ID...
3....

没有必要穷举所有id...
回复

使用道具 举报

发表于 2007-1-4 21:06:16 | 显示全部楼层
910大人还在找最强ID不?
如果还在找不妨用偶今天完成的版本
3-4分钟就能完成一次穷举...
回复

使用道具 举报

发表于 2007-1-4 21:13:31 | 显示全部楼层
// 3-4分钟就能完成一次穷举...


难道解决了数据模拟问题?

我要看看
回复

使用道具 举报

发表于 2007-1-4 21:18:44 | 显示全部楼层
其实是针对这个算法进行了特殊优化
把不必要的计算,内存复制都省掉了...

好吧...附件删除...
回复

使用道具 举报

发表于 2007-1-4 21:20:05 | 显示全部楼层
已下载
研究中...
回复

使用道具 举报

发表于 2007-1-4 21:22:02 | 显示全部楼层
还是命令行好
不需要管界面
直接运算输出就行


当初写C#版时为了多线程调试了好几次
回复

使用道具 举报

发表于 2007-1-4 21:26:05 | 显示全部楼层
恩恩...而且界面的显示也会占用很多时间...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-6-19 03:31 , Processed in 0.032416 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表