欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    加密与解密解析.docx

    • 资源ID:11149069       资源大小:22.22KB        全文页数:12页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    加密与解密解析.docx

    1、加密与解密解析 实验一:加密、解密技术试验时间和地点:5月18号、信工楼307一:实验目的:1)掌握网络通信中常用的加密方式。2)理解分组加密与高级加密标准。3)提高对DES算法加密和解密原理的认识。4)理解公钥加密体制,了解RSA的加密、解密过程和性能,掌握其工作原理。二:实验内容:DES加密。1)获取提供的DES源代码。2)阅读代码并进行调试。3)选取适当明文进行加密和解密的测试,例如:给定的源程序是对明文”Hello”进行加密。RSA加密:运行RSA演示软件: 对明文进行加解密;1)理解RSA产生公钥和私钥的方法;2)理解和验证RSA的加密、解密过程;三:实验步骤:首先打开VS2010

    2、软件。include #include #include / 位处理 #include void BitsCopy(bool *DatOut,bool *DatIn,int Len); / 数组复制 void ByteToBit(bool *DatOut,char *DatIn,int Num); / 字节到位 void BitToByte(char *DatOut,bool *DatIn,int Num); / 位到字节void BitToHex(char *DatOut,bool *DatIn,int Num); / 二进制到十六进制 64位 to 4*16字符void HexToBit(

    3、bool *DatOut,char *DatIn,int Num); / 十六进制到二进制 void TablePermute(bool *DatOut,bool *DatIn,const char *Table,int Num); / 位表置换函数 void LoopMove(bool *DatIn,int Len,int Num); / 循环左移 Len长度 Num移动位数 void Xor(bool *DatA,bool *DatB,int Num); / 异或函数 void S_Change(bool DatOut32,bool DatIn48); / S盒变换 void F_Chan

    4、ge(bool DatIn32,bool DatKi48); / F函数 void SetKey(char KeyIn8); / 设置密钥void PlayDes(char MesOut8,char MesIn8); / 执行DES加密void KickDes(char MesOut8,char MesIn8); / 执行DES解密 int main() int i=0; char MesHex16=0; / 16个字符数组用于存放 64位16进制的密文 char MyKey8=0; / 初始密钥 8字节*8 char YourKey8=0; / 输入的解密密钥 8字节*8 char MyMe

    5、ssage8=hello; / 初始明文 /*-*/ printf(Before encrypting: :n); gets(MyMessage); / 明文 printf(Please input your Secret Key:n); gets(MyKey); / 密钥 while(MyKeyi!=0) / 计算密钥长度 i+; while(i!=8) / 不是8 提示错误 printf(Please input a correct Secret Key!n); gets(MyKey); i=0; while(MyKeyi!=0) / 再次检测 i+; SetKey(MyKey); / 设

    6、置密钥 得到子密钥Ki PlayDes(MesHex,MyMessage); / 执行DES加密 printf(Your Message is Encrypted!:n); / 信息已加密 for(i=0;i16;i+) printf(%c ,MesHexi); printf(n); printf(n); printf(Please input your Secret Key to Deciphering:n); / 请输入密钥以解密 gets(YourKey); / 得到密钥 SetKey(YourKey); / 设置密钥 KickDes(MyMessage,MesHex); / 解密输出到

    7、MyMessage printf(Deciphering Over !:n); / 解密结束 for(i=0;i8;i+) printf(%c ,MyMessagei); printf(n); system(pause); /*-*/ /*- 把DatIn开始的长度位Len位的二进制 复制到DatOut后-*/void BitsCopy(bool *DatOut,bool *DatIn,int Len) / 数组复制 OK int i=0; for(i=0;iLen;i+) DatOuti=DatIni; /*- 字节转换成位函数 每8次换一个字节 每次向右移一位 和1与取最后一位 共64位

    8、-*/void ByteToBit(bool *DatOut,char *DatIn,int Num) / OK int i=0; for(i=0;i(i%8)&0x01; /*- 位转换成字节函数 字节数组每8次移一位 位每次向左移 与上一次或 -*/void BitToByte(char *DatOut,bool *DatIn,int Num) / OK int i=0; for(i=0;i(Num/8);i+) DatOuti=0; for(i=0;iNum;i+) DatOuti/8|=DatIni(i%8); /*- 二进制密文转换为十六进制 需要16个字符表示-*/void Bit

    9、ToHex(char *DatOut,bool *DatIn,int Num) int i=0; for(i=0;iNum/4;i+) DatOuti=0; for(i=0;iNum/4;i+) DatOuti = DatIni*4+(DatIni*4+11) +(DatIni*4+22)+(DatIni*4+39) DatOuti=DatOuti%16+7; / 余数大于9时处理 10-15 to A-F / 输出字符 else DatOuti=DatOuti%16+0; / 输出字符 /*- 十六进制字符转二进制-*/void HexToBit(bool *DatOut,char *Dat

    10、In,int Num) int i=0; / 字符型输入 for(i=0;i9) / 大于9 DatOuti=(DatIni/4-7)(i%4)&0x01; else DatOuti=(DatIni/4-0)(i%4)&0x01; / 表置换函数 OKvoid TablePermute(bool *DatOut,bool *DatIn,const char *Table,int Num) int i=0; static bool Temp256=0; for(i=0;iNum;i+) / Num为置换的长度 Tempi=DatInTablei-1; / 原来的数据按对应的表上的位置排列 Bit

    11、sCopy(DatOut,Temp,Num); / 把缓存Temp的值输出 / 子密钥的移位void LoopMove(bool *DatIn,int Len,int Num) / 循环左移 Len数据长度 Num移动位数 static bool Temp256=0; / 缓存 OK BitsCopy(Temp,DatIn,Num); / 将数据最左边的Num位(被移出去的)存入Temp BitsCopy(DatIn,DatIn+Num,Len-Num); / 将数据左边开始的第Num移入原来的空间 BitsCopy(DatIn+Len-Num,Temp,Num); / 将缓存中移出去的数据加

    12、到最右边 / 按位异或void Xor(bool *DatA,bool *DatB,int Num) / 异或函数 int i=0; for(i=0;iNum;i+) DatAi=DatAiDatBi; / 异或 / 输入48位 输出32位 与Ri异或void S_Change(bool DatOut32,bool DatIn48) / S盒变换 int i,X,Y; / i为8个S盒 for(i=0,Y=0,X=0;i8;i+,DatIn+=6,DatOut+=4) / 每执行一次,输入数据偏移6位 / 每执行一次,输出数据偏移4位 Y=(DatIn01)+DatIn5; / af代表第几行

    13、 X=(DatIn13)+(DatIn22)+(DatIn31)+DatIn4; / bcde代表第几列 ByteToBit(DatOut,&S_BoxiYX,4); / 把找到的点数据换为二进制 / F函数void F_Change(bool DatIn32,bool DatKi48) / F函数 static bool MiR48=0; / 输入32位通过E选位变为48位 TablePermute(MiR,DatIn,E_Table,48); Xor(MiR,DatKi,48); / 和子密钥异或 S_Change(DatIn,MiR); / S盒变换 TablePermute(DatIn

    14、,DatIn,P_Table,32); / P置换后输出void SetKey(char KeyIn8) / 设置密钥 获取子密钥Ki int i=0; static bool KeyBit64=0; / 密钥二进制存储空间 static bool *KiL=&KeyBit0,*KiR=&KeyBit28; / 前28,后28共56 ByteToBit(KeyBit,KeyIn,64); / 把密钥转为二进制存入KeyBit TablePermute(KeyBit,KeyBit,PC1_Table,56); / PC1表置换 56次 for(i=0;i16;i+) LoopMove(KiL,2

    15、8,Move_Tablei); / 前28位左移 LoopMove(KiR,28,Move_Tablei); / 后28位左移 TablePermute(SubKeyi,KeyBit,PC2_Table,48); / 二维数组 SubKeyi为每一行起始地址 / 每移一次位进行PC2置换得 Ki 48位 void PlayDes(char MesOut8,char MesIn8) / 执行DES加密 / 字节输入 Bin运算 Hex输出 int i=0; static bool MesBit64=0; / 明文二进制存储空间 64位 static bool Temp32=0; static b

    16、ool *MiL=&MesBit0,*MiR=&MesBit32; / 前32位 后32位 ByteToBit(MesBit,MesIn,64); / 把明文换成二进制存入MesBit TablePermute(MesBit,MesBit,IP_Table,64); / IP置换 for(i=0;i=0;i-) BitsCopy(Temp,MiL,32); F_Change(MiL,SubKeyi); Xor(MiL,MiR,32); BitsCopy(MiR,Temp,32); TablePermute(MesBit,MesBit,IPR_Table,64); BitToByte(MesOut,MesBit,64); 四:实验结果 五、实验心得:在本次试验中我借鉴了老师的代码、感觉自己对DES算法还是心有余而力不足。代码的复杂性强,自己需要加强理解。


    注意事项

    本文(加密与解密解析.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开