- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C实现DES加密算法.doc
程序设计文档
(一)设计原理:
本次作业是完成DES加密算法的。DES加密算法是用64位明文和64位密钥进行相关的运算得到。具体的实现步骤为:
将输入的明文字符转为64位的二进制代码
将输入的密钥字符转为64位的二进制代码
将64位明文二进制进行位变换
将变换后的明文二进制分为左右两个32数组
将32位右数组扩展为48位数组
将64位密钥进行除奇偶转换变成56位数组
将56位数组等分为ab两个数组
将a,b两个数组分别进行移位
将移位后的ab两个数组进行合并成56位数组
将合并后的56位数组变换成48位数组
在第10步生成的48位数组和第5步生成的48位进行异或得到新的48位数组
新的48位数组进行s盒变换后得到32位数组
将32位数组进行变换得到新的32位数组
新的32位数组和明文的左数组进行异或得到新的右数组,原来的右数组变成新的左数组
回到第5步一共迭代16次
最后将右左数组合并成64位数组
64位数组进行变换得到新的64位数组
将64位数组变换成8个字符
这次作业要求用类的思想来解决,不过我没有很好的把加密算法抽象成类的概念,只是把整个大的加密算法当成一个类,每次加密都是一个类,所有的子函数都作为算法类的公有函数。或许可以把明文抽象成一个类,密文又抽象成一个类,把他们共有的函数作为这个类的公有函数;又或许把几个函数作为一个类的公有函数,但是这样只是采用了类的形式而已并非很好的运用类的思想。本次作业采取的是第一个把整个大的加密算法当为一个类的方法。
(二)设计工作流程
(三)程序代码
#includeiostream
#includestring
using namespace std;
class wangxianDES
{public:
void sr(char a[8]);//将输入的字符转入shur字符数组里去
void mwerjinzhi();//明文进行二进制转换,并放入mingwen[64]数组里
void merjinzhi();//密钥进行二进制转换,并放入miyue[64]数组里
void bmingwen();//64位初始明文进行移位变换,并放入mingwenbianhuan[64]数组里
void fenmingwen();//变换后的明文分为r和l两个32位数组,放入mingwenr[32]和mingwenl[32]
void kuozhan();//r数组由32位扩展到48位,放到mingwenrk[48]
void cjo();//64位密钥除去奇偶位变成56位,放到miyuecjo[56]
void df();//将56位密钥等分成a和b两个28位的数组,放到miyuea[28]和miyueb[28]
void ayw(int n);//a数组进行移位
void byw(int n);//b数组进行移位
void hb();//将移位后的a和b数组合并,放到miyuehb[56]
void bh();//合并后将56位数组变换成48位数组,放到miyuehbh[48]
void tyh();//将扩展后的r数组和合并后的48位数组进行异或运算,放到yh[48]
void s();//对48位数据进行s盒变换,得到32位数据放到sbh[32]
void sh();//sbh[32]的数据再变换放到szbh[32]里
void zyh();//将szbh[32]和mingwenl[32]异或放到mingwenr[32]里
void zhb();//最后将mingwenr[32]和mingwenl[32]合并到zh[64]里
void zzz();//zh[64]再变换放到aaa[64]里
int aaa[64];
private:
char shur[8];//定义了所需要的数组,具体用途上边函数注释里提到
int bhs[8], mingwen[64],mingwenbianhuan[64],mingwenl[32],mingwenr[32],mingwenrk[48],
miyue[64],miyuecjo[56],miyuea[28],miyueb[28],miyueyw[16],miyuehb[56],
miyuehbh[48],yh[48],sbh[32],szbh[32],zhong[32],zh[64];
};
int mwbhjz[64]={58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56
您可能关注的文档
- 基于Flexsim仿真的逆向物流网络模型优化研究.doc
- 基于QT的局域网跨平台即时通信软件 毕业论文.doc
- ca09-hollow-hills-fundamentaldoc:ca09中空丘陵fundamentaldoc.doc
- 建筑结构与结构CAD(上)答案.doc
- 佛山市构建数字城管框架方案.doc
- 肇庆市医院管理评价细则(二级医院)1000分.doc
- DES算法的可视化程序的实现论文.doc
- 编写高性能Java代码的最佳实践.doc
- Households Work and Flexibility家庭和工作的灵活性.doc
- 数学文二轮专题复习课件专题4第19课时立体几何综.doc
- 兽用中药天然药物临床试验指导原则草案.doc
- EASL慢性乙型肝炎临床实践指南.doc
- 建筑结构期末复习重难点指导.doc
- 基于J2ME平台的掌上网络商店——客户端的开发.doc
- Culminating Activity - Professional Portfolio高潮活动-专业的组合.doc
- Punjab Fiscal Resources Review - Lahore School of Economics旁遮普的财政资源回顾拉合尔经济学院.doc
- 为保持科技型中小企业技术创新基金若干重点项目指南....doc
- 全国计算机二级考试C语言模拟试题.doc
- 农业经济生活圈的刍议.doc
- AMAZING LIQUID NITROGEN - SUNY Stony Brook Materials 惊人的液态氮-纽约州立大学石溪分校材料.doc
文档评论(0)