MD5实现代码 C
DES.C
(1) 根据提供的用户名name=” HELLO”和口令password=”12345678”;
(2) 生成两个随机数:R1与 R2, 0<=R1<=63,0<=R2<=63 (3) 将R1与R2转换为对应的字符串(盐值)st_salt=”ab”; (4) 拼接pwd=st_salt||password, pwd=”ab12345678”;
(5) 用pwd作为密钥:Des_SetKey(pwd);用DP[]="HELLODES";作为明文; (6) 循环加密25次;结果为64位的二进制串bitDC; (7) 将bitDC转换为字符串str=”CkAmmju10k. ”;
(8) 拼接pwd=st_salt||str, pwd=”abCkAmmju10k.”;
(9) 将name与pwd的值存储到文件password.txt;存储的格式为” HELLO: abCkAmmju10k.”
(10)将name与password变量改为main函数变量;password.exe username password RSA_DES.C
(1) 取两个素数p=3,q=11; (2) 计算n=pq; (3) 计算f(n)=(p-1)(q-1); (4) 取e=3,e与f(n)互质,且1 < e < f(n); (5) 取d=7; (6) 设计出一对公私密钥,加密密钥(公钥)为:KU =(e, n),解密密钥(私钥)为:KR =(d, n)。7,33 3,33 (7) 明文为” dgut”,将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即: 表1 字母与数字转换表
则” dgut”分组转换为:04,07,21,20。
(8) 明文加密,将” dgut”加密 用户加密密钥KU =(e, n) 将数字化明文分组信息(04,07,21,20)加密成密文。由 进行计算。
(9) 密文解密,将加密后的”dgut”进行加密 用户B收到密文,将其解密,解密密钥(私钥)为:KR =(d, n),由 进行计算。
用户B得到明文信息为:04,07,21,20。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“dgut”。
(10) 采用上述方法,实现对从键盘输入的任意长度英文字符串进行加密与解密
DES加密解密的设计与实现: 1,将字符串根据IP表,进行替换; 2,将替换后的字符串分成L0,R0两部分; 3,生成密匙k1: 第一步,先把密钥中的奇偶校验为去掉,然后根据选择置换PC-1讲剩下的密钥分成两块C0和D0; 第二步,将C0和D0进行循环左移变换,变换后生成C1和D1,然后C1和D1合并,通过选择置换PC-2生成子密钥K1; 第三步,C1和D1再次经过循环左移变换,生成C2和D2,C2和D2合并,通过选择置换PC-2生成子密钥K2; 第四步,以此类推,需要注意其中循环左移的位数,一共是循环左移十六次,其中LS1(第一次),LS2(第二次),LS9,LS16是循环左移一位,其他的都是左移两位。
4,将扩充完的R0(有8位是校验位)和子密钥K1进行模2加运算,得到48位的一个串,把这个串从左到右分为8组,A=a1a2a3a4a5a6a7a8; 5,通过S盒来收缩,把每组中的a1a6放一块,换算为十进制,a2a3a4a5放一块,也换算为十进制。a1a6代表S盒中的行标,a2a3a4a5代表列标。 6,把32位的串经过置换函数P的置换得到的结果,即为加密字符串;