首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

古典加密的C++实现——凯撒密码、单表代换密码

前言 好久没写文了,今天更新几个加密算法,均采用C++实现 系列文章 DH算法 古典加密 凯撒密码 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密...: message) { if (isalpha(c)) { char shiftedChar = (toupper(c) - 'A' + shift) % 26...shift); cout << "加密后字符串:" << encryptedMessage << endl; return 0; } 解密和加密差不多,上面也给出公式了,还请读者自己实现一下...单表代换密码 这个也比较简单,就是把明文中的每个字母替换为固定的密文字母来进行加密。...(c)); encryptedMessage += islower(c) ?

81830
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    密码发展史之古典密码

    密码学的发展大概经历了三个阶段:古典密码阶段、近代密码阶段、现代密码阶段。下面我们一起了解古典密码阶段。 古典密码阶段是指从密码的产生到发展成为近代密码之间的这段时期密码的发展历史。...我们从古代产生密码的各个国家和几个简单的古典密码体制等方面来认识一下古典密码。...一、古典密码在古代各国的使用 古代中国:从古到今,军队历来是使用密码最频繁的地方,因为保护己方秘密并洞悉敌方秘密是克敌制胜的重要条件。...这就是不会泄露朝廷与军队之间相互联系内容的秘密通信语言。敌人再聪明也不能识破它。 以下是关于“阴书”使用方法对话的译文。...二、古典密码中简单的密码体制 1.Caesar密码 凯撒(Caesar)密码是公元前一世纪在高卢战争时被使用的,它是将英文字母向前移动k位。

    1.7K70

    CTF入门学习笔记——Crypto密码古典密码

    CTF入门学习笔记——Crypto密码古典密码) 这篇笔记是我对自己初步学习CTF的一个小总结,主要涉及了Crypto板块的古典密码,这部分内容比较简单,利用一些工具加上观察分析一般都能解决,但是古典密码一般会和编码结合起来一起考察...凯撒密码 凯撒密码算是古典密码里面非常有名的密码了,相传凯撒大帝曾经使用使用这种密码与下属沟通,所以命名为凯撒密码。....-- — …- 解码结果如下所示: ILOVEYOU ---- 维吉尼亚密码 维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。...flag{wethinkwehavetheflag} ---- 猪圈密码 猪圈密码(Pigpen cipher,亦称朱高密码、共济会密码)是一种以格子为基础的简单替代式密码。...即使使用符号,也不会影[密码分析,亦可用在其它替代式的方法。 待补充 CTF中的古典密码远远不止这些,不够现在一般都是现代密码偏多。我会在接下来的学习中不断补充,同时也希望我能一直坚持下去。

    1.1K20

    C语言直接实现开机密码修改!

    今天给大家带来一个比较实用的东西,那就是用C语言对电脑的开机密码进行修改,按照正常的方法修改一般会提示你输入原密码,我们今天的方法可以直接修改,话不多说,上代码: #include ...include int main(){ char user[100] = {0}; char *username = "用户名"; char *password= "密码...当带选项使用时,如果用户名不存在,则创建一个,而它的修改密码的格式为:net user 用户名 密码 接下来我们简单分析下代码:创建user数组用于存储net user命令,给定用户名和密码,调用sprintf...将命令写入user数组,最终使用标准库命令system调用net user命令完成密码修改,整个过程还是比较简单的,当然这段代码直接写入了帐户名和密码,也可以增加一些代码提示用户输入,实现也比较简单,就不多说了

    2.2K20

    C语言直接实现开机密码修改!

    今天给大家带来一个比较实用的东西,那就是用C语言对电脑的开机密码进行修改,按照正常的方法修改一般会提示你输入原密码,我们今天的方法可以直接修改,话不多说,上代码: 小编给大家推荐一个学习氛围超好的地方...当带选项使用时,如果用户名不存在,则创建一个,而它的修改密码的格式为:net user 用户名 密码 接下来我们简单分析下代码:创建user数组用于存储net user命令,给定用户名和密码,调用sprintf...将命令写入user数组,最终使用标准库命令system调用net user命令完成密码修改,整个过程还是比较简单的,当然这段代码直接写入了帐户名和密码,也可以增加一些代码提示用户输入,实现也比较简单,就不多说了

    1.8K20

    CTF---密码学入门第六题 古典密码

    古典密码分值:10 来源: 北邮天枢战队 难度:易 参与人数:5115人 Get Flag:1549人 答题人数:1783人 解题通过率:87% 密文内容如下{79 67 85 123 67 70...key值的固定结构 格式:CTF{ } 解题链接: 原题链接:http://www.shiyanbar.com/ctf/1870 【解题报告】 这是我入门密码学开始写的第六道题...#000073OTA 然后我们将这串数字扔进在线解码工具进行解码,得到如下结果: OCU{CFTELXOUYDECTNGAHOHRNFIENM}IOTA 我们看到这题是古典密码...,所以自然的会想到凯撒密码和栅栏密码这两种经典密码~~~ 咱们要对这串密文进行分组,总共三十五个,我们可以分为五组,每组七个,如下所示: OCU{CFT ELXOUYD ECTNGAH OHRNFIE

    1.2K90

    c语言qq加密具体思路,悄悄告诉你:C语言如何实现QQ密码大盗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一般的盗密码的软件的软件都是通过监视键盘来获得密码,这样操作比较方便,但是这样也存在一定问题,密码有的时候不是很准确,因为有的人输入密码并不是从前到后输入,...(4)处理密码。 以下部分全是使用C语言,文章中我假设读者您是会C/SDK编程的。如果遇到相关的概念性问题,您可以查看MSDN或是上BBS 询问!...0’; //把QQ号码和QQ密码写入C盘password.txt中 f=CreateFile(“c:\\password.txt”,GENERIC_WRITE,FILE_SHARE_WRITE,NULL...strcat(total,psw); WriteFile(f,&total,sizeof(total),&dw,NULL); CloseHandle(f); } 最后在C盘password.txt也许会出现这样两种情况...可以看出,第2种情况把QQ当成了密码了,所以密码还得减去QQ号, 特别说明:我这样直接处理wParam参数,得到的字符密码全是大写的,具体大小写问题我没有就没有仔细去处理的,功能实现就行了,毕竟我使用他不用来盗密码

    1.5K20

    CTF---密码学入门第五题 传统知识+古典密码

    传统知识+古典密码分值:10 来源: 霜羽 难度:易 参与人数:2297人 Get Flag:735人 答题人数:938人 解题通过率:78% 小明某一天收到一封密信,信中写了几个不同的年份          ...,大家看到这个东西,肯定会想,传统知识是什么啊,这里写了一堆年份,大家看完题干以后会有点困惑,感觉这个跟古典密码学有什么关系啊,一堆文字啥的,题干中有写到一个甲子,甲子是啥啊,在比赛中不知道的时候,你可以上网去搜...但是呢,得到这组数又有啥用呢,古典密码学有的只是一串字符啊,咱们可以想想,数字和字符怎么有对应关系呢?于是我们可以想到ASCII ? 由对应关系可以得到以下字符串 ?...这个时候我们还是要利用工具CTFCrackTools,虽然有工具,但是我们不知道是什么密码应该怎么办呢? 我们可以先去尝试一些密码~~~ 咱们可以首先去尝试一下栅栏密码 ?...于是我们可以试着去尝试下这两个密码,都去进行凯撒密码解密,最后发现第二个解密出来的密码中其中有一个有规律 ? 这时候我们可以试想一下,这个也许就是这道题的key,我们可以去试着提交一下 ?

    1.3K120

    凯撒密码C语言实现,加解密字节流数据

    如果是将移动的位数用随机数进行代替,并且记录下该随机数,则破解密码的难度将大大增加。 ...其中K就是密钥; 字母表就像是密码本,所以凯撒加密算法本质上是一种基于密码本的加解密算法; 如果字母表换成255个数字,则可以支持对任意字节流进行加解密,应用到网络通信,改进版的支持任意字节的加解密算法...,C语言实现: //编码和解码表 #define BYTE_MAX_VALUE 256 static uint8_t encodeString[BYTE_MAX_VALUE]; static uint8...str2_encrypt:%01x-->dec:%01x  \r\n",str2_encrypt[i],str3_decrypt[i]);     } } 输出: @"source:a-->sec:1c  ..." @"source:f3-->sec:5  " @"source:ee-->sec:0  " @"source:33-->sec:45  " @"str2_encrypt:1c-->dec:a  "

    1.3K10

    C语言密码破解案例,精彩啊!

    现代密码学发展到今天,应该来讲破解密码的可能性已经很低了,而且破解的方法比较单一,因为现在普遍采取不可逆的哈希加密方式(如md5、SHA-1、HMAC-MD5等等),无法通过反向计算破解密码,因此目前有效的密码破解方式仍然是哈希碰撞来暴力破解...不过今天我们要讲的的不是暴力破解,我们接下来要说的是跟C语言学习有关的一个密码破解的案例,一定程度上也提供了一种密码破解策略,大家请先看代码: 1 密码破解C语言案例 2 破解案例分析 上面的代码其实很简单...,提示用户输入密码,读入字符数组,通过比较函数验证密码,正确的话输出破解成功,错误提示密码错误,密码为abc。...从代码中可以看出通过if语句即为破解成功,也就是打印出密码破解成功即可。讲到这里,其实我们大家有一个思维误区,就是认为密码破解就是要找出原始密码才算成功,其实不是这样的。...如果用户输入一个足够造成缓存溢出并且重写“flag”变量默认值所存在位置的内存的长“密码”,即使这个密码无法通过验证,flag验证位也变成了非零,虽然上面的密码并不等于正确密码abc,但我们仍然可以通过缓存溢出绕开密码安全保护

    2.1K20

    C语言 | 将密码译回原文,并输出密码和原文

    要求C语言编程将密码译回原文,并输出密码和原文。  解析: 可以定义一个数组ch,在其中存放电文。...如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母,由于此密码的规律是对称转换,即第1个字母转换为最后一个字母,最后一个转换为第1个字母,因此从原文译为密码和从密码译为原文...:\n");//提示语句    gets(ch);//键盘输入    printf("\n密码是:\n%s",ch);//密码    j=0;//赋初值    while(ch[j]!...: C yuyan 密码是: C yuyan 输出原文: X bfbzm -------------------------------- Process exited after 9.542 seconds...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言 | 将密码译回原文,并输出密码和原文 更多案例可以go公众号:C语言入门到精通

    1.5K54
    领券