DES_Swapcharleft32charright32voidDES_E_D_Blockcharplai
Block8charsubKeys1648charcipherBlock8voidDES_E
cryptcharplai
FilecharkeyStrcharcipherFilevoidDES_DecryptcharcipherFilecharkeyStrcharplai
File加密模块:voidDES_E
cryptcharplai
FilecharkeyFilecharcipherFile用来加密一个文本文件。这个模块又调用了函数:voidDES_E
cryptBlockcharplai
Block8charsubKeys1648charcipherBlock8用来加密单个分组。因为加密中涉及2进制转换,所以voidByteToBitcharchcharbit8等2进制跟字符转换的函数也包含在内。这些函数又运用数组数据。解密模块:voidDES_DecryptcharcipherFilecharkeyFilecharplai
File用来解密一个文本文件。这个模块又调用了函数:voidDES_DecryptBlockcharcipherBlock8charsubKeys1648charplai
Block8用来解密单个分组。因为解密中也涉及2进制转换,所以voidByteToBitcharchcharbit8等2进制跟字符转换的函数也包含在内。这些函数又运用数组数据。
第3页共10页
f3系统功能程序设计
31基本要求部分311字节转换成2进制字节转换成
voidByteToBitcharchcharbit8i
tc
tforc
t0c
t8c
tch是从文本中读取到得一个1字节(8位)字符,通过8轮的ch右移来与1相与提取ch的最后一位2进制数存入数组bit中。这样一来bit8这个数组就存入了ch的二进制值。bitc
tchc
t1
312将长度为8的字符串转为二进制位串
voidChar8ToBit64charch8charbit64i
tc
tforc
t0c
t8c
tByteToBitchc
tbitc
t3每次循环调用一次字节转换成2进制函数,把一个字符转换成一个八进制数组,之所以每次转换8个字节是因为DES加密的分组长度是64bit。
313循环左移
voidDES_ROLchardata56i
ttimechartemp4保存将要循环移动到右边的位
第4页共10页
fmemcpytempdatatimememcpytemptimedata28time前28位移动memcpydatadatatime28timememcpydata28timetemptime后28位移动memcpydata28data28time28timememcpydata56timetemptimetime
314生成子密钥生成子密钥
voidchartemp56charch6i
tc
ti
tipri
tf