我在论坛中看到有人这样的代码:
Dim A As String, B() As Byte, X As Integer
B = A
X = Rnd(-1)
Randomize 123567 '123567是一个密钥
For X = 0 To UBound(B)
B(X) = B(X) Xor Int(Rnd(1) * 256)
Next X
A = B
我想问的是,这里既然是用随即数来加密的,那解密的时候怎能解密出来呢?除非你能保证解密时候产生的随即数和加密时候一样
谁能为我解释一下。
这里的Randomise是产生随机数种子,种子有何用处?还有就是X = Rnd(-1)为何要这样做?
Dim A As String, B() As Byte, X As Integer
B = A
X = Rnd(-1)
Randomize 123567 '123567是一个密钥
For X = 0 To UBound(B)
B(X) = B(X) Xor Int(Rnd(1) * 256)
Next X
A = B
我想问的是,这里既然是用随即数来加密的,那解密的时候怎能解密出来呢?除非你能保证解密时候产生的随即数和加密时候一样
谁能为我解释一下。
这里的Randomise是产生随机数种子,种子有何用处?还有就是X = Rnd(-1)为何要这样做?
解决方案 »
- WebBrowser中的打印问题
- 求VB目前最好的论坛
- 急急急急急急急急急急急急急急急急急急急急急,VB打包一问,急急急急急急急急急急急急急急急急急急急急急急
- 连接超时问题?
- 请教VB获取存储过程返回值
- 请教一个在记录集里随机循环抽取记录的问题??
- 为什么我用PostNew.asp?room=5105的形式读不到值
- 大家来看看人民教育出版社的书,如此粗劣!义务教育教材竟然雷同!!!
- 谁能给我CopyMemory函数的例子?
- 本人做了一个代码收藏的软件,非常非常希望大家去下载测试 http://vbren.yeah.net
- 请问时间是怎样比较的?
- 请教一下,mshflexgrid 这控件如何间色!
MsgBox Rnd(1)
End Sub你要是不加Randomise的话,每次运行都会出现同样的数字。Randomise就是起到每次运行得到的随机数都不一样的目的。
Randomize 12345
MsgBox Rnd(1) * 20
End Sub
好像不是,我用上面的代码,每次执行程序第一个随即数字都是一样的。并非楼上说的那样
//MSDN
Randomize 语句
初始化随机数生成器。语法Randomize [number]可选的 number 参数是 Variant 或任何有效的数值表达式。说明Randomize 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。