📄 rijndael.cls
字号:
CopyMemory fkey(0), pass(0), 4& * i
For j = 0 To 8
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 7) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 6) Xor fkey(i)
fkey(i + 2) = fkey(i - 5) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 4) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 3) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 2) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 1) Xor fkey(i + 5)
i = i + 7
Next j
Nr = 13
'Debug.Assert i = (Nr + 1) * 5
Case 256
i = 8
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 8) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 7) Xor fkey(i)
fkey(i + 2) = fkey(i - 6) Xor fkey(i + 1)
If j = 8 Then Exit Do
fkey(i + 3) = fkey(i - 5) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 4) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 3) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 2) Xor fkey(i + 5)
fkey(i + 7) = fkey(i - 1) Xor fkey(i + 6)
i = i + 8
j = j + 1
Loop
Nr = 14
'Debug.Assert i + 3 = (Nr + 1) * 5
Case Else
Err.Raise 1, , "cRijndael.SetCipherKey - Illegal KeyBits Value"
SetCipherKey = 1
Exit Function
End Select
CreateDecryptionKeys 5
#End If
Case 192
'192 bit block size
Select Case KeyBits
Case 128
i = 4
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 4) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 3) Xor fkey(i)
If j = 18 Then Exit Do
fkey(i + 2) = fkey(i - 2) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 1) Xor fkey(i + 2)
i = i + 4
j = j + 1
Loop
Nr = 12
'Debug.Assert i + 2 = (Nr + 1) * 6
#If SUPPORT_LEVEL = 2 Then
Case 160
i = 5
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 5) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 4) Xor fkey(i)
fkey(i + 2) = fkey(i - 3) Xor fkey(i + 1)
If j = 14 Then Exit Do
fkey(i + 3) = fkey(i - 2) Xor fkey(i + 2)
fkey(i + 4) = fkey(i - 1) Xor fkey(i + 3)
i = i + 5
j = j + 1
Loop
Nr = 12
'Debug.Assert i + 3 = (Nr + 1) * 6
#End If
Case 192
i = 6
CopyMemory fkey(0), pass(0), 4& * i
For j = 0 To 11
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 6) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 5) Xor fkey(i)
fkey(i + 2) = fkey(i - 4) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 3) Xor fkey(i + 2)
fkey(i + 4) = fkey(i - 2) Xor fkey(i + 3)
fkey(i + 5) = fkey(i - 1) Xor fkey(i + 4)
i = i + 6
Next j
Nr = 12
'Debug.Assert i = (Nr + 1) * 6
#If SUPPORT_LEVEL = 2 Then
Case 224 '(Nr+1)*Nb/Nk (when to exit)
i = 7
CopyMemory fkey(0), pass(0), 4& * i
For j = 0 To 10
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 7) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 6) Xor fkey(i)
fkey(i + 2) = fkey(i - 5) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 4) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 3) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 2) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 1) Xor fkey(i + 5)
i = i + 7
Next j
Nr = 13
'Debug.Assert i = (Nr + 1) * 6
#End If
Case 256
i = 8
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 8) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 7) Xor fkey(i)
If j = 10 Then Exit Do
fkey(i + 2) = fkey(i - 6) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 5) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 4) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 3) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 2) Xor fkey(i + 5)
fkey(i + 7) = fkey(i - 1) Xor fkey(i + 6)
i = i + 8
j = j + 1
Loop
Nr = 14
'Debug.Assert i + 2 = (Nr + 1) * 6
Case Else
Err.Raise 1, , "cRijndael.SetCipherKey - Illegal KeyBits Value"
SetCipherKey = 1
Exit Function
End Select
CreateDecryptionKeys 6
#If SUPPORT_LEVEL = 2 Then
Case 224
'224 bit block size
Select Case KeyBits
Case 128
i = 4
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 4) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 3) Xor fkey(i)
If j = 23 Then Exit Do
fkey(i + 2) = fkey(i - 2) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 1) Xor fkey(i + 2)
i = i + 4
j = j + 1
Loop
Nr = 13
'Debug.Assert i + 2 = (Nr + 1) * 7
Case 160
i = 5
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 5) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 4) Xor fkey(i)
fkey(i + 2) = fkey(i - 3) Xor fkey(i + 1)
If j = 18 Then Exit Do
fkey(i + 3) = fkey(i - 2) Xor fkey(i + 2)
fkey(i + 4) = fkey(i - 1) Xor fkey(i + 3)
i = i + 5
j = j + 1
Loop
Nr = 13
'Debug.Assert i + 3 = (Nr + 1) * 7
Case 192
i = 6
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 6) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 5) Xor fkey(i)
If j = 15 Then Exit Do
fkey(i + 2) = fkey(i - 4) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 3) Xor fkey(i + 2)
fkey(i + 4) = fkey(i - 2) Xor fkey(i + 3)
fkey(i + 5) = fkey(i - 1) Xor fkey(i + 4)
i = i + 6
j = j + 1
Loop
Nr = 13
'Debug.Assert i + 2 = (Nr + 1) * 7
Case 224
i = 7
CopyMemory fkey(0), pass(0), 4& * i
For j = 0 To 12
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 7) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
fkey(i + 1) = fkey(i - 6) Xor fkey(i)
fkey(i + 2) = fkey(i - 5) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 4) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 3) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 2) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 1) Xor fkey(i + 5)
i = i + 7
Next j
Nr = 13
'Debug.Assert i = (Nr + 1) * 7
Case 256
i = 8
j = 0
CopyMemory fkey(0), pass(0), 4& * i
Do
CopyMemory s(0), fkey(i - 1), 4&
fkey(i) = fkey(i - 8) Xor (Te4(s(0)) And &HFF000000) _
Xor (Te4(s(3)) And &HFF0000) _
Xor (Te4(s(2)) And &HFF00&) _
Xor (Te4(s(1)) And &HFF&) _
Xor rco(j)
If j = 12 Then Exit Do
fkey(i + 1) = fkey(i - 7) Xor fkey(i)
fkey(i + 2) = fkey(i - 6) Xor fkey(i + 1)
fkey(i + 3) = fkey(i - 5) Xor fkey(i + 2)
CopyMemory s(0), fkey(i + 3), 4&
fkey(i + 4) = fkey(i - 4) Xor (Te4(s(3)) And &HFF000000) _
Xor (Te4(s(2)) And &HFF0000) _
Xor (Te4(s(1)) And &HFF00&) _
Xor (Te4(s(0)) And &HFF&)
fkey(i + 5) = fkey(i - 3) Xor fkey(i + 4)
fkey(i + 6) = fkey(i - 2) Xor fkey(i + 5)
fkey(i + 7) = fkey(i - 1) Xor fkey(i + 6)
i = i + 8
j = j + 1
Loop
Nr = 14
'Debug.Assert i + 1 = (Nr + 1) * 7
Case Else
Err.Raise 1, , "cRijndael.SetCipherKey - Illegal KeyBits Value"
SetCipherKey = 1
Exit Function
End Select
CreateDecryptionKeys 7
#End If
Case 256
'256 bit block size
Select Case KeyBits
Case 128
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -