计算机安全与可靠性实验之加密与解密

简介:
文章作者:冰血封情 [E.S.T]
信息来源:邪恶八进制安全小组 ([url]www.eviloctal.com[/url]

其实这个查不多是学校的网络安全实验的实验报告 本次实验其实主要是要研究一下简单的密码加密解密算法 首先根据老师的要求我写了一个异或加密解密的程序 程序主要实现用异或的方式对明文文本进行加密和密文文本的解密 是对称的算法 程序如下:
#i nclude <stdio.h>
#i nclude <stdlib.h>
int main(int argv, char *argc[])
{
       char ch;
       int key = 4;  //密钥
       FILE *fp1, *fp2;
       if(argv != 3)  //参数不是3就打印使用方法
       {
              printf("Parameter error!\n");
              printf("Usage: code.exe <infile> <outfile>\n");
              exit (0);
       }
       if((fp1 = fopen(argc[1], "r")) == NULL)  //打开读入
       {
              printf("Error open %s!\n", argc[1]);
              printf("Please check the file...\n");
              exit (0);
       }
       if((fp2 = fopen(argc[2], "w")) == NULL)  //打开输出
       {
              printf("Error open %s!\n", argc[2]);
              printf("Please check the file...\n");
              exit (0);
       }
       while((ch = fgetc(fp1)) != EOF)
       {
              printf("%c ", ch);
              ch = ch ^ key;  //加解密过程
              printf("%c\n", ch);
              fputc(ch, fp2);
       }
       printf("Success encrypt!\n");
       fclose(fp1);
       fclose(fp2);
       return 0;
}
程序十分简单意在演示 你可以使用自己的复杂点的算法 比如和该字母ASCII后多少位字母再进行异或就可以使加密更强健 使用的时候 程序会提示你
Usage: code.exe <infile> <outfile>

按照说明使用 比如将如下的明文:
I L0ve CuiE!

加密后成如下的样子:
M$H4ra$GqmA%

同样的方法可以解密 这就是一个简单的异或对称加密程序 当然我这里是内置了密钥key的 你也可以让用户自己输入密钥 也是一样的
好了现在我们来做第二个程序:给出明文和密文 求密钥
也就是一个暴力破解的过程 我们这里使用穷举
仍然假设给出的明文密文如上 我们现在来破解他得到密钥 我们的意图是假设已经知道密钥在数字0到1000之间 现在我们来进行逐一穷举 程序如下:
#i nclude <stdio.h>
#i nclude <stdlib.h>
int main(int argv, char *argc[])
{
       char ch1, ch2;
       int key;
       FILE *fp1, *fp2;
       if(argv != 3)  //参数不是3就打印使用方法
       {
              printf("Parameter error!\n");
              printf("Usage: code.exe <enfile> <defile>\n");
              exit (0);
       }
       if((fp1 = fopen(argc[1], "r")) == NULL)  //打开读入
       {
              printf("Error open %s!\n", argc[1]);
              printf("Please check the file...\n");
              exit (0);
       }
       if((fp2 = fopen(argc[2], "r")) == NULL)  //打开输出
       {
              printf("Error open %s!\n", argc[2]);
              printf("Please check the file...\n");
              exit (0);
       }
       ch1 = fgetc(fp1);
       ch2 = fgetc(fp2);
       printf("%c ", ch1);
       printf("%c\n", ch2);
       for(key = 0; key < 1000; key ++)  //穷举
       {
              if(ch2 == (ch1 ^ key))  //判断
              {
                     printf("Success Brute Force!\n");
                     printf("The Key is %d\n", key);
                     break;
              }
       }
       
       fclose(fp1);
       fclose(fp2);
       return 0;
}
这个程序的用法是 把明文密文的第一个字符放在两个不同的文件里 然后执行程序 程序自己进行穷举核对 一旦爆出密钥立刻终止循环 打印成功消息和破解出来的密钥
至于非对称加密其实也一样的道理 关键是算法 算法有了语句好办 这次实验就这么短个简单的东西...
插曲:
做第一个小练习的时候还遇见了一个文件末尾判断的问题 在使用EOF和feof();的时候出现的 其实是文件指针的指向地址的问题 还是非常感谢偶们小组的 Bideyore参与讨论给出指导分析

















本文转自loveme2351CTO博客,原文链接:http://blog.51cto.com/loveme23/8383  ,如需转载请自行联系原作者


相关文章
|
1月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
319 0
|
7月前
|
算法 安全 数据安全/隐私保护
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
42 0
|
7月前
|
安全 算法 Java
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
50 0
|
1月前
|
算法 安全 Shell
SSH:加密安全访问网络的革命性协议
SSH:加密安全访问网络的革命性协议
75 9
|
3天前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
1天前
|
存储 安全 区块链
在保障支付交易安全方面,加密货币技术发挥了至关重要的作用
**加密货币支付安全依赖于区块链的交易不可篡改性与分布式共识,非对称加密确保交易匿名与验证,多重签名增强安全性并提供灵活性,而冷钱包存储通过离线方式降低私钥风险。这些技术构建了加密交易的安全基石。**
|
1月前
|
vr&ar 数据安全/隐私保护
实验六 文本串的加密解密
实验六 文本串的加密解密
|
1月前
|
存储 安全 算法
【专栏】保护数据安全的重要性以及安全加密算法在数据保护中的应用
【4月更文挑战第27天】在数字化时代,数据安全至关重要,关系到个人隐私、企业商业机密、国家安全及经济发展。安全加密算法(如对称加密、非对称加密和哈希算法)在保护数据方面发挥关键作用。它们应用于电子商务、金融、物联网、云存储和数字签名等领域,确保信息传输和存储的安全。面对日益复杂的挑战,我们需要持续研究和应用加密技术,提高数据安全意识,共同维护数字世界的繁荣与安全。
|
1月前
|
安全 算法 网络安全
|
1月前
|
机器学习/深度学习 安全 算法
安全多方计算之三:同态加密
安全多方计算之三:同态加密
622 42