首页
社区
课程
招聘
隐藏明码请教[求助]
发表于: 2006-8-26 14:19 4059

隐藏明码请教[求助]

2006-8-26 14:19
4059
“F(序列号)==F(用户名)
F(序列号)==用户名
比如对序列号采用一种算法处理,生成tempSn,然后对用户名采用另外一种算法处理,生成tempName,如果tempSn==tempName,刚验证成功.
这些算法可以采用对称密码学算法或者公钥密码学算法来实现.”

cnbragon大侠在讨论隐藏明码的时候提出以上方法,可在实际中如何实现上述思路?左右都是同一个函数F吗?如何才能保证一定有相等的机会?
请教各位了!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
左右应该使用不同的变换函数F,而且必须有一个是可逆的变换.
2006-8-26 15:02
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
F(用户名)一般不可逆,算出个中间码!!
G(序列号)可逆,即G(中间码)=序列号,G(序列号)=中间码
你注册机可以这样写,先用用户算出中间码,然后用G(中间码)算出注册码,程序里面就if G(注册码)!=F(用户名)
当然上面只是参考。
2006-8-26 15:37
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
4
不是同一个函数。
举一个最简单的可以用于实际的例子:
软件注册验证模块如下:
temp1=SHA-1(UserName)
temp2=RSA_Encrypt(License Key)
if temp1==temp2,则注册成功,否则失败
共享软件作者可以用如下的方法生成License Key:
temp1=SHA-1(UserName)
License Key=RSA_Decrypt(temp1)

此倒中只要选择的RSA参数能满足正确的加解密就可以了。
你也可以换成其它的散列算法,或者换成对称的也可以。

其实还有更安全和方便的方法:数字签名,如ECDSA,但需要一些相关的知识方可使用,否则只会适得其反。
2006-8-26 16:41
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢各位,特别是cnbragon大侠。收获真是太大了!
2006-8-27 13:12
0
游客
登录 | 注册 方可回帖
返回
//