简单异或实际上是非常的危险的,这个知识是在书上看到的。最近跟某位朋友进行了这方面的争论,因此我突然对这个问题非常感兴趣。其实之前我也没有任何密码学分析的经验,更没有写过相关的程序。今天也就花了一天的时间,就把整个破解程序给写出来了。
这个是那位朋友提出来的算法的核心:

char g_szSeed[5/**//*26*/] = 
'a', 'b', 'c' ,'1', '2', 
}; 

BOOL Compress(LPCSTR lpstrSrc, LPSTR lpstrDen, unsigned long lLen)
_ASSERT(lLen > 0); 

size_t nSeedCount = sizeof ( g_szSeed ) / sizeof(char); 

for(unsigned long i = 0 ; i < lLen; ++i )
char chCurSeed = g_szSeed[i % nSeedCount]; 

if(*(lpstrSrc + i)) 
*(lpstrDen + i) = (chCurSeed ^ *(lpstrSrc + i)); 
else 
*(lpstrDen + i) = *(lpstrSrc + i); 




return TRUE; 

他写的是C++代码,我对这个进行了一定的转化,变成了C#的形式。然后对这个加密算法加密出来的密文进行攻击,攻击的时候完全不知道密钥的长度及内容,也不涉及加密算法代码本身(当然会涉及到该加密算法的相关知识)。因此破解过程还是相当的公正的。

想知道我怎么进行破解的吗?点击这里可以下载源程序(当然也包括破解程序)。

运行过我的程序,你应该会发现原来破解“简单异或”加密算法是一件多么容易的事情了:一天的编码时间(从完全没有这方面经验开始),加上几秒钟都不到的运行时间,一切就搞定了。

看!我写的关于“简单异或”加密的破解分析演示程序!相关推荐

  1. java对称加密,java异或加密,Java高性能对称加密

    学过网络安全的可能知道加密可分为对称加密与非对称加密,比如大名鼎鼎的ssh.非对称加密有RSA,sm9等,对称加密有DES,sm4算法等,但是计算机基础比较扎实的可能知道一个值a与值b异或操作2次后可 ...

  2. 0宽字符加密_一文看懂异或加密,有动画演示呦

    应用程序保护是指单词和应用程序 什么是异或加密 在逻辑运算中,除了 与 或 非 这 3 种运算之外,还有一种运算运算叫做 异或(xor),符号记为 ^,异或运算简单来说就是 相同为 0,不同为 1, ...

  3. [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例

    最近开始学习网络安全相关知识,接触了好多新术语,感觉自己要学习的东西太多,真是学无止境,也发现了好几个默默无闻写着博客.做着开源的大神.准备好好学习下新知识,并分享些博客与博友们一起进步,加油.非常基 ...

  4. python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】

    前言 本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课 ...

  5. noip2014到2017初赛普及组看程序写结果、完善程序

    一晃又是noip2018了 今天先进行普及组初赛摸底 计划做两套题(noip2016.noip2014,这两套题比较中规中矩),分析一下大家的知识点缺陷,然后每个人再进行有针对性的学习. 重点是 看程 ...

  6. Java入门知识,写一个最简单java程序

    本文目录 一.Java语言的简介 二.写一个最简单Java程序 1.Notepad配置 2.最简单的Java程序 3.代码分析 4.编译与编译常见错误 5.执行java程序 一.Java语言的简介 0 ...

  7. vue组件制作专题 - (mpvue专用)在mpvue中纯自己写css实现简单左右轮播

    在mpvue中纯自己写css实现简单左右轮播 CSDN:jcLee95 邮箱:291148484@163.com 项目中,在src目录下的components目录下新建一个新文件并重命名为jcmv-c ...

  8. 小白兔写话_一年级小白兔看图写话

    2016-06-27 回答 看图写话怎么写 •1.看图先观察 •首先对于我们已经展示在眼前的看图写话,不要求立马就开始动笔书写.如果看到就开始书写,多半会写到中间就会停笔再观察的,所以我们在动笔之前, ...

  9. AndroidSDK开发6我用kotlin协程写了一个简单sdk

    目录 AndroidSDK开发6我用kotlin协程写了一个简单sdk 1.kotlin的依赖和导包如下:(//如果不使用协程可以去掉协程的导包减少sdk包大小) 2.Application代码如下: ...

最新文章

  1. encountered end of file_需要给自己一个end
  2. NLP 注意力机制总结言简意赅的
  3. Log4Net五步走
  4. CSS实现图片居中且缩放不影响图片纵横比
  5. 桌面显示激活windows_愚蠢的怪胎技巧:如何在桌面上显示Windows版本
  6. windows 下安装Simplejson方法
  7. 开始《数据机构与算法之美》之旅
  8. php最新版本的安装,centos安装新PHP版本
  9. 树状数组(搬运自维基百科)
  10. 放之四海皆适用的设计原则(一)
  11. 1. SOAP 简介
  12. M2Det 网络解读
  13. 微信小程序登录流程理解
  14. jni--‘jni_internal.cc:616] JNI FatalError called,RegisterNatives failed,导致system_server crash
  15. 深信服负载均衡开发实习面经
  16. ggplot2柱状图进阶画法
  17. AX 2009 删除已经发出领料单的订单行
  18. 2022浙江大学计算机考研超强攻略
  19. v-model的实现原理
  20. NOIP复习篇———枚举

热门文章

  1. 展望:模型驱动的深度学习
  2. 《科学》盘点2018可能被聚焦的研究领域
  3. 面试官问我:什么是高并发下的请求合并?
  4. 漫画:什么是 “抽象工厂模式” ?
  5. Pandas/networkx图分析简单入门
  6. Swift教程之控制流
  7. Linux学习-Xshell断开连接程序依然运行
  8. ECMAScript3中数组方法
  9. Python学习笔记一简介及安装配置
  10. Python实现JSON反序列化类对象