📄 des.txt
字号:
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L8,R8
R8(i) = L7(i) Xor CodeP(i)
L8(i) = R7(i)
Next
'进行第9次迭代
For i = 0 To 47
CodeE(i) = R8(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K9(i) '与K9按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L9,R9
R9(i) = L8(i) Xor CodeP(i)
L9(i) = R8(i)
Next
'进行第10次迭代
For i = 0 To 47
CodeE(i) = R9(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K10(i) '与K10按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L10,R10
R10(i) = L9(i) Xor CodeP(i)
L10(i) = R9(i)
Next
'进行第11次迭代
For i = 0 To 47
CodeE(i) = R10(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K11(i) '与K11按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L11,R11
R11(i) = L10(i) Xor CodeP(i)
L11(i) = R10(i)
Next
'进行第12次迭代
For i = 0 To 47
CodeE(i) = R11(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K12(i) '与K12按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L12,R12
R12(i) = L11(i) Xor CodeP(i)
L12(i) = R11(i)
Next
'进行第13次迭代
For i = 0 To 47
CodeE(i) = R12(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K13(i) '与K13按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L13,R13
R13(i) = L12(i) Xor CodeP(i)
L13(i) = R12(i)
Next
'进行第14次迭代
For i = 0 To 47
CodeE(i) = R13(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K14(i) '与K14按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L14,R14
R14(i) = L13(i) Xor CodeP(i)
L14(i) = R13(i)
Next
'进行第15次迭代
For i = 0 To 47
CodeE(i) = R14(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K15(i) '与K15按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L15,R15
R15(i) = L14(i) Xor CodeP(i)
L15(i) = R14(i)
Next
'进行第16次迭代
For i = 0 To 47
CodeE(i) = R15(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K16(i) '与K16按位作不进位加法运算
Next
'分8组
For i = 0 To 5
CodeS1(i) = CodeE(i)
CodeS2(i) = CodeE(i + 6)
CodeS3(i) = CodeE(i + 12)
CodeS4(i) = CodeE(i + 18)
CodeS5(i) = CodeE(i + 24)
CodeS6(i) = CodeE(i + 30)
CodeS7(i) = CodeE(i + 36)
CodeS8(i) = CodeE(i + 42)
Next
'S盒运算,得到8个数
S(0) = S1(CodeS1(5) + CodeS1(0) * 2, CodeS1(4) + CodeS1(3) * 2 + CodeS1(2) * 4 + CodeS1(1) * 8)
S(1) = S2(CodeS2(5) + CodeS2(0) * 2, CodeS2(4) + CodeS2(3) * 2 + CodeS2(2) * 4 + CodeS2(1) * 8)
S(2) = S3(CodeS3(5) + CodeS3(0) * 2, CodeS3(4) + CodeS3(3) * 2 + CodeS3(2) * 4 + CodeS3(1) * 8)
S(3) = S4(CodeS4(5) + CodeS4(0) * 2, CodeS4(4) + CodeS4(3) * 2 + CodeS4(2) * 4 + CodeS4(1) * 8)
S(4) = S5(CodeS5(5) + CodeS5(0) * 2, CodeS5(4) + CodeS5(3) * 2 + CodeS5(2) * 4 + CodeS5(1) * 8)
S(5) = S6(CodeS6(5) + CodeS6(0) * 2, CodeS6(4) + CodeS6(3) * 2 + CodeS6(2) * 4 + CodeS6(1) * 8)
S(6) = S7(CodeS7(5) + CodeS7(0) * 2, CodeS7(4) + CodeS7(3) * 2 + CodeS7(2) * 4 + CodeS7(1) * 8)
S(7) = S8(CodeS8(5) + CodeS8(0) * 2, CodeS8(4) + CodeS8(3) * 2 + CodeS8(2) * 4 + CodeS8(1) * 8)
'S盒运算32位结果
For i = 0 To 7
RetS(i * 4 + 0) = (S(i) And &H8) \ &H8
RetS(i * 4 + 1) = (S(i) And &H4) \ &H4
RetS(i * 4 + 2) = (S(i) And &H2) \ &H2
RetS(i * 4 + 3) = (S(i) And &H1) \ &H1
Next
For i = 0 To 31
'P变换
CodeP(i) = RetS(P(i))
'产生L11,R11
R16(i) = L15(i) Xor CodeP(i)
L16(i) = R15(i)
Next
For i = 0 To 31
BinCode(i) = L16(i)
BinCode(i + 32) = R16(i)
Next
For i = 0 To 63
CodeIP(i) = BinCode(IP_1(i))
Next
For i = 0 To 7
tempReturn(i) = CodeIP(i * 8 + 0) * &H80
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 1) * &H40
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 2) * &H20
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 3) * &H10
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 4) * &H8
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 5) * &H4
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 6) * &H2
tempReturn(i) = tempReturn(i) + CodeIP(i * 8 + 7) * &H1
Next
CopyMemory bReturn(j), tempReturn(0), 8
Next
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -