p; 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 K2(i) ''''与K2按位作不进位加法运算 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 K1(i) ''''与K1按位作不进位加法运算 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) = R16(i) BinCode(i + 32) = L16(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
谨已这篇文章送给和我一样在VB中苦苦挣扎的兄弟们!!
上一页 [1] [2] [3] [4] [5] [6] [7] [8] |