c_d(i) = c15(i)
c_d(i + 28) = d15(i)
next
'pc_2转换,生成k15
for i = 0 to 47
k15(i) = c_d(pc_2(i))
next
'***************************************************k16
'生成c16,d16
for i = 0 to 26
c16(i) = c15(i + lsi(16))
d16(i) = d15(i + lsi(16))
next
c16(27) = c15(0)
d16(27) = d15(0)
'组合c16,d16成c_d
for i = 0 to 27
c_d(i) = c16(i)
c_d(i + 28) = d16(i)
next
'pc_2转换,生成k16
for i = 0 to 47
k16(i) = c_d(pc_2(i))
next
'**************************************************************************************
'加密过程
'将明文位数扩展为8的倍数
if (ubound(scode) + 1) mod 8 > 0 then redim preserve scode(((ubound(scode) + 1) \ 8 + 1) * 8 - 1)
'定义返回密文长度
redim breturn(ubound(scode))
for j = 0 to ubound(scode) step 8
copymemory tempcode(0), scode(j), 8
for i = 0 to 7
bincode(i * 8 + 0) = (tempcode(i) and &h80) \ &h80
bincode(i * 8 + 1) = (tempcode(i) and &h40) \ &h40
bincode(i * 8 + 2) = (tempcode(i) and &h20) \ &h20
bincode(i * 8 + 3) = (tempcode(i) and &h10) \ &h10
bincode(i * 8 + 4) = (tempcode(i) and &h8) \ &h8
bincode(i * 8 + 5) = (tempcode(i) and &h4) \ &h4
bincode(i * 8 + 6) = (tempcode(i) and &h2) \ &h2
bincode(i * 8 + 7) = (tempcode(i) and &h1) \ &h1
next
'ip置换
for i = 0 to 63
codeip(i) = bincode(ip(i))
next
'分段
for i = 0 to 31
r0(i) = codeip(i)
l0(i) = codeip(i + 32)
next
'进行第一次迭代
for i = 0 to 47
codee(i) = r0(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)