这段加密算法还可以反成明码吗?

NIRVANAIII 2002-04-26 10:34:00
Function mistake(preString)
Dim texts
Dim seed As Integer
Dim i, length
preString = Trim(preString)
length = Len(preString)
seed = length
Randomize (length)
texts = ""
For i = 1 To length
seed = Int(94 * Rnd(-Asc(Mid(preString, i, 1)) - seed * Asc(Right(preString, 1))) + 32)
texts = texts & Chr(seed) & Chr(Int(94 * Rnd(-seed) + 32))
Next
Dim dist
dist = texts
For i = 1 To Len(texts)
If Mid(texts, i, 1) <> "'" Then
dist = dist + Mid(texts, i, 1)
End If
Next
mistake = dist
End Function

先发10分。
解决了,加100分!!!!!!!
...全文
105 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
NIRVANAIII 2002-05-08
  • 打赏
  • 举报
回复
谢谢各位了。
我现在放弃了,看来是不成了。

给分了!!
lovingkiss 2002-05-08
  • 打赏
  • 举报
回复
CMOS密码还不唯一呢;只是个转成明码,也没有说一定要是原来的那个啊;
yuhaii 2002-05-08
  • 打赏
  • 举报
回复
gz
NIRVANAIII 2002-05-08
  • 打赏
  • 举报
回复
再来看看!!!
asciiman 2002-05-02
  • 打赏
  • 举报
回复
??
dsclub 2002-05-02
  • 打赏
  • 举报
回复
转不了!!
NIRVANAIII 2002-05-01
  • 打赏
  • 举报
回复
谢谢,天同的关注。

jyu1221 2002-04-28
  • 打赏
  • 举报
回复
今天告诉大家一个正确的回答,就是这段加密算法不可以反成明码,
理由如下,
把CHR(13)传到函数里得到的结果是8U
把CHR(82)传到函数里得到的结果也是8U
这说明了,明码与密码不是一一对应的关系,
而是明码的范围广,密码的范围小。
所以想把密码还原成“原来”的密码是不可能的,
jyu1221 2002-04-27
  • 打赏
  • 举报
回复
这个应该是可以解的,因为它用到RND的伪随机函数,
这说明了它每次取出来的数值是固定的。
由于现在已经太晚了,先睡了,明天再帮你看一下
NIRVANAIII 2002-04-27
  • 打赏
  • 举报
回复
我只是做到这地步了:
加密后的字符数是原明码的2倍。
通过单数位的字符可以求得以上代码的seed的值。
但是,seed是被取整得来的:
seed = Int(94 * Rnd(-Asc(Mid(preString, i, 1)) - seed * Asc(Right(preString, 1))) + 32)
但是,被去掉的位数是什么怎么搞定呢?

求求各位了!!
zyl910 2002-04-27
  • 打赏
  • 举报
回复
一时想不清楚

帮你up算了
NIRVANAIII 2002-04-27
  • 打赏
  • 举报
回复
up
jason_li 2002-04-26
  • 打赏
  • 举报
回复
gz
dsclub 2002-04-26
  • 打赏
  • 举报
回复
楼上,到底是什么呀??????

说出来嘛!!


给分的!!
lovingkiss 2002-04-26
  • 打赏
  • 举报
回复
能加当然肯定能解拉
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 依据所提供的资料,我们深入剖析此问题以及所给出的两种算法方案。 ### 问题背景 该问题源自王晓东编撰的《算法设计与实验题解》一书,书中阐述了一个值得注意的数学议题:针对一本页码从1到n顺序编号的书籍,要求统计所有页码中数字0至9各自出现的频次。例如,若n=13,则页码序列为1、2、...、13,其中数字1出现5次(体现在1、10、11、12、13中),数字0出现1次(体现在10中)。 ### 问题描述 具体而言,我们需要开发一种算法,其输入参数为一个正整数n,输出结果需为0至9这十个数字各自出现的频次。所有页码均以十进制形式呈现,且不包含任何前导零,即不会出现如006之类的页码表示。 ### 解决方案一:时间复杂度为O(n*log10(n))的算法 首先,介绍一种时间复杂度为O(n*log10(n))的算法实现。其核心构思在于遍历从1到n的每一个数值,然后逐一分解每个数值的各个位,并统计各类数字出现的频次。具体步骤如下: 1. 初始化一个长度为10的数组`count`,用于记录0至9每个数字出现的频次,初始值均为0。 2. 从1开始遍历至n,对于每一个数值i,将其转换为整数并进行以下操作: - 利用循环结构,持续将当前数值除以10,获取余数(即当前最低位的数字),并累加到对应的计数器中。 3. 遍历完成后,输出`count`数组中的每一个元素,即为所求的结果。 ### 解决方案二:优化算法 为了提升效率,提出了一种更为优越的算法。该算法基于以下观察:在1到10^n-1之间的任意区间内,每一种数字0至9出现的频次是相等的。例如,在1到999之间,每一种数字0至9出现的频次均相...

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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