这种正运算一对多,逆运算多对一的算法是如何实现的啊?

追寻梦中人 2005-04-26 08:22:17
刚开始我输入一串数字123456,
按下软件中的按钮“生成密码”后生成另外一串数字,
每按一下“生成密码”就会生成另外一串不同的数字。。。

而我按下另外一个按钮“还原密码”后,
不管生成的密码是多少,
都可以还原出123456,

哪位知道这个算法是怎么实现的啊?

另外,这个自己输入的123456是可以自己改变的。


即:输入六个数字,经过某一算法可以生成很多的数字串,
再通过这个算法的逆运算,可以把这生成的很多的数字串还原为输入的六个数字,

这个算法是怎么实现的啊??
...全文
259 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happycock 2005-04-27
  • 打赏
  • 举报
回复
一个例子,实数域上三角函数满足你的要求。哈哈,其实不是这样的。不过原理相似,没准你也能搞出新的加密算法的。
rightyeah 2005-04-27
  • 打赏
  • 举报
回复
同意 bcloud(云云) 的看法,无非就是加入冗余数据,使得破解更困难罢了
qrlvls 2005-04-26
  • 打赏
  • 举报
回复
这就有点类似电话卡的卡号和密码,卡号可以是随机的,密码是通过某种固定值与卡号进行计算,同样通过卡号和密码也可以还原原始值,只不过真实的原始值不固定而已
qrlvls 2005-04-26
  • 打赏
  • 举报
回复
其实你可以把生成的密码分成两部分来看待
密码 = x 连接 y
x 为任意一随机数
原始值为 a
则通过任意一种可逆方法将 a 和 x 运算生成 y
还原时将密码折分成 x 和 y 进行运算生成 a
Xcoder 2005-04-26
  • 打赏
  • 举报
回复
任意一个多对一函数,只要他的正反函数都是可计算的就行了。
for example: y=x^2就行
zzwu 2005-04-26
  • 打赏
  • 举报
回复
1。所按的“生成密码”按钮是同一个吗?
2。还原是一下子就还原,还是需要几次?
zhang_jiang 2005-04-26
  • 打赏
  • 举报
回复
可以用一系列的一对一映射实现:

a<-->b<-->c<-->d<-->e
a为输入数字, 你再用一个level来表示现在是第几层映射,
如level=2表示a映射到b, 再由b映射到c
由c反算a就简单了.
bcloud 2005-04-26
  • 打赏
  • 举报
回复
来个最简单的
123456 => 1234561,1234562,1234563,1234564,....1234569,
逆过来,就直接去掉最后一位。
呵呵,加密算法不懂,但上面这个似乎也符合要求。
stonesky 2005-04-26
  • 打赏
  • 举报
回复
这是加密算法,看安全与加密相关书籍

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧