CodeP(i) = RetS(P(i))
'产生L2,R2
R2(i) = L1(i) Xor CodeP(i)
L2(i) = R1(i)
Next
'进行第三次迭代
For i = 0 To 47
CodeE(i) = R2(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K3(i) '与K3按位作不进位加法运算
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))
'产生L3,R3
R3(i) = L2(i) Xor CodeP(i)
L3(i) = R2(i)
Next
'进行第四次迭代
For i = 0 To 47
CodeE(i) = R3(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K4(i) '与K4按位作不进位加法运算
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))
'产生L4,R4
R4(i) = L3(i) Xor CodeP(i)
L4(i) = R3(i)
Next
'进行第五次迭代
For i = 0 To 47
CodeE(i) = R4(E(i)) '经过E变换扩充,由32位变为48位
CodeE(i) = CodeE(i) Xor K5(i) '与K5按位作不进位加法运算
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)
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




