【字符】RC4 加密解密

  勇芳 2017-4-5 4648

Function RC4(sKey As String, sBuf As String) As String  '// RC4 加密解密(調用它一次加密,再次用相同的密鑰來解密)
'// IMPORTANT: // NOT SURE IF THE "MOD"'s SHOULD BE 256 OR 255
'// 需要使用較大的字符串對RC4等軟件的輸出測試
 #REGISTER None
 Register x As Dword, i As Dword
 Local byte_cipher As Byte, result_ciphered As Byte, byte_msg As Byte Ptr, sOut As String, keylen As Dword, j As Byte
 Dim KBox(255) As Byte, Sbox(255) As Byte '// Key-box和S-box的每個字節尺寸,256(0~255)
 Poke$ VarPtr(KBox(0)), sKey
 keylen = Len(sKey)
 '//初始化S-box。即必須通過 RC4(),每次調用。只是不能將它設置在程序啟動時 ; 一次為每個解密需要 reinitialisation。 
 For i = 0 To 255: Sbox(i) = i: Next
 For i = 0 To 255
    j = (j + Sbox(i) + KBox(i Mod keylen)) Mod 255
    Swap Sbox(i), Sbox(j)   '// 我用我自己的 ByteSwap() 為我第一次的 RC4 執行,但 !RDTSC CPU 時間證明 PB 的本機 SWAP() 是大約 10%更快 ;歸功于 PB 開發團隊 !特別是因為 SWAP() 是靈活的數據類型
 Next i
 '//編碼階段
 j = 0:  byte_msg = StrPtr(sBuf)
 For x = 1 To Len(sBuf)
    i = (i + 1) Mod 255
    j = (j + Sbox(i)) Mod 255
    Swap Sbox(i), Sbox(j)
    byte_cipher = Sbox((Sbox(i) + Sbox(j)) Mod 255)
    result_ciphered = byte_cipher Xor @byte_msg
    Incr byte_msg
    sOut = sOut & Chr$(result_ciphered)
 Next x
 Function = sOut
End Function


因國家互聯網安全管理要求,關閉回帖功能。大家需要留言,請使用【勇芳軟件客服】即時聯系勇芳點此打開->>勇芳軟件客服
返回
聯系勇芳
一个人看的www视频播放中文_2012中文字幕电影_亚洲国产成人高清在线观看_中文字幕天堂最新版在线网