最近需要用vb寫個小測試程式,所以把荒廢了很久很久的vb翻了出來,從網上找了個10來兆的綠色版裝上了。**中測試中需要用到rc4的演算法,於是從網上搜了一圈,結果很是失望,真正能用的幾乎沒有,網路上四處傳播的那個**,演算法上應該說還是對的,但是採用string作為函式引數,結果處理的反而成錯的了。這個錯誤的東西還四處傳播,真是天下文章一大抄啊,居然這麼多轉貼的就沒人做個簡單的測試? 於是順手按照c的**,簡單寫了個程式,採用的是byte陣列來傳遞引數。呼叫的時候,可以採用strconv將普通的string和byte陣列做轉換,或者省事就直接用string也是沒問題的。
option base 0
public type rc4_key
s(256) as byte
x as byte
y as byte
end type
public sub prepare_key(byref key_data() as byte, byref key as rc4_key)
dim i as long, j as byte, keylen as long, c as integer
for c = 0 to 255
key.s(c) = c
next
key.x = 0
key.y = 0
i = 0
j = 0
keylen = ubound(key_data) - lbound(key_data) + 1
for c = 0 to 255
j = ((key_data(i) mod 256) + key.s(c) + j) mod 256
key.s(c) = key.s(c) xor key.s(j)
key.s(j) = key.s(c) xor key.s(j)
key.s(c) = key.s(c) xor key.s(j)
i = (i + 1) mod keylen
next
end sub
public sub rc4(byref buff() as byte, byref key as rc4_key)
dim x as byte, y as byte, z as byte, c as long, ub as long, lb as long
x = key.x
y = key.y
ub = ubound(buff)
lb = lbound(buff)
for c = lb to ub
x = (x + 1) mod 256
y = ((key.s(x) mod 256) + y) mod 256
key.s(x) = key.s(x) xor key.s(y)
key.s(y) = key.s(x) xor key.s(y)
key.s(x) = key.s(x) xor key.s(y)
z = ((key.s(x) mod 256) + key.s(y)) mod 256
buff(c) = buff(c) xor key.s(z)
next
key.x = x
key.y = y
end sub
呼叫的方法 dim s() as byte, p() as byte dim enkey as rc4_key, denkey as rc4_key s = "1234567890abcdefghijklmnopqrstuvwxyz中文" p = "123abc測試" call prepare_key(p, enkey) denkey = enkey call rc4(s, enkey) call rc4(s, denkey) msgbox s 如果是多個內容加密,也可以分段解密,或者一次解密全部內容 dim s() as byte, p() as byte dim enkey as rc4_key, denkey as rc4_key s = "1234567890abcdefghijklmnopqrstuvwxyz中文" p = "123abc測試" call prepare_key(p, enkey) denkey = enkey call rc4(s, enkey) dim s2() as byte, s3() as byte s2 = "資訊abcd1234" call rc4(s2, enkey) redim s3(0 to ubound(s) + ubound(s2) + 1) call copymemory(s3(0), s(0), ubound(s) + 1) call copymemory(s3(ubound(s) + 1), s2(0), ubound(s2) + 1) call rc4(s3, denkey) msgbox s3 RC4加密演算法
rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...
RC4加密演算法
簡介 包括初始化演算法 ksa 和加密演算法兩大部分 主要 初始化部分 這個基本上是固定的 void rc4 init unsigned char s,unsigned char key,unsigned long len s最開始是傳入的長度為256的char型空陣列,用來存放初始化後的s key...
RC4加密演算法
rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...