Project1

标题: 图形化的密码系统 [打印本页]

作者: slick    时间: 2008-11-24 17:12
标题: 图形化的密码系统
这是一个数字——图形密码转换器。

在 0 ~ 2^32-1 这个数字区间范围内,每一个数字都对应一组图形密码,无一重复或遗漏。

界面如下:


操作方法:

ESC键——清空重置
Q、W键——切换密码、数字输入模式

切换至“密码变数字”模式时:
上下左右键移动光标
SHIFT键修改图形
回车键将密码翻译成十位数字

切换至“数字变密码”模式时:
左右键移动箭头
上下键修改数位上的数字
回车键将十位数字翻译成图形密码

下面看:
一些整千万数所对应的图形密码。猛一眼看去它们有规律可循吗?





再譬如,只改变其中一个图形位元所得的数字翻译结果。猛一眼看去它们有规律可循吗?





再譬如:
先不要使用“数字变密码”功能,你能否输入一组图形密码,使它对应的数字是3,000,000?

这个小程序不过是利用了四进制——十进制的转换算法,加之又把密码输入框的排序打乱了,但这其中的规律确实能让人感到摸不着头脑。

该系统的主要用途:
1.为一些不便使用存档的小游戏设置接关密码。
2.难度较高的解谜题里可以借鉴该系统中的数字——密码翻译算法。

范例工程:
http://rpg.blue/upload_program/d ... ��统_107946467.rar

RMVX版本的密码输入系统请点击这里:
http://rpg.blue/viewthread.php?tid=110891
作者: 一路一风尘    时间: 2008-11-24 17:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: slick    时间: 2008-11-24 17:20
以下引用一路一风尘于2008-11-24 9:17:26的发言:

既然用到了鼠标,可以连续传递图像,模拟画笔,从截图上似乎是3种颜色?

不晓得你的做法,但正规是将格子转为三进制数字,填入格子对应的位,之后转为十进制显示。


基本做法你说对了,

但每个图形位元有 4 种状态:红、绿、蓝和无图,严格来讲应该是四进制。

转换用的核心语句:

  1. #--------------------------------------------------------------------------
  2.   # ● 密码变数字
  3.   #--------------------------------------------------------------------------
  4.   def password_to_digit
  5.     # 数字清零,强制相加
  6.     @digitvalue = 0
  7.     for iii in 0...16
  8.       @digitvalue += @block[iii].value * (4 ** iii)
  9.     end
  10.     # 显示结果
  11.     for iii in 0...10
  12.       @digitindi[9 - iii] = @digitvalue % 10
  13.       @digit[9 - iii].bitmap.clear
  14.       @digit[9 - iii].bitmap.draw_text(0, 0, 16, 32, @digitindi[9 - iii].to_s, 1)
  15.       @digitvalue = (@digitvalue / 10).to_i
  16.     end
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 数字变密码
  20.   #--------------------------------------------------------------------------
  21.   def digit_to_password
  22.     # 数字清零,强制相加
  23.     @digitvalue = 0
  24.     for iii in 0...10
  25.       @digitvalue += @digitindi[9 - iii] * (10 ** iii)
  26.     end
  27.     # 显示结果
  28.     for iii in 0...16
  29.       @block[iii].value = @digitvalue % 4
  30.       @digitvalue = (@digitvalue / 4).to_i
  31.     end
  32.   end
复制代码


作者: 雪流星    时间: 2008-11-24 18:07
用红、绿、蓝、黑代替0, 1, 2, 3
然後有16格
也就是说有4^16种变化?

[LINE]1,#dddddd[/LINE]
突然想到,4^4=256
可以增强成4格为一单位
变成64格的密码,那就更难破解了
作者: 3nξhα0_lim    时间: 2008-11-24 18:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2008-11-24 18:16
看了LZ的脚本
转换4进制可以用 to_i(4)来转换
先把数值转成字符串,再调用即可
作者: 一路一风尘    时间: 2008-11-24 18:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: 英仙座    时间: 2008-11-24 19:52
美化素材之后会很华丽。
作者: slick    时间: 2008-11-24 20:35
以下引用英仙座于2008-11-24 11:52:18的发言:

美化素材之后会很华丽。


关键是Picture文件夹下的 " Sphere.png " 文件。

以下引用snstar2006于2008-11-24 10:07:50的发言:

用红、绿、蓝、黑代替0, 1, 2, 3
然後有16格
也就是说有4^16种变化?

突然想到,4^4=256
可以增强成4格为一单位
变成64格的密码,那就更难破解了

[本贴由作者于 2008-11-24 10:13:18 最后编辑]



以下引用snstar2006于2008-11-24 10:16:39的发言:

看了LZ的脚本
转换4进制可以用 to_i(4)来转换
先把数值转成字符串,再调用即可


对了,RM支持多少位的整数?像这样光是四进制16位密码就要占到10位数了。
作者: 雪流星    时间: 2008-11-24 20:44
Fixnum到9位数
准确的是到1073741823
也就是(2^30)-1
Bignum到内存爆掉为止(至少说明里是这麽说的)

我测试到20位都还是Bignum{/fd}
作者: 3nξhα0_lim    时间: 2008-11-24 21:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一路一风尘    时间: 2008-11-24 21:06
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1