2025年凯撒密码加密解密(凯撒密码加密解密c语言编程实现)

凯撒密码加密解密(凯撒密码加密解密c语言编程实现)p data id p838747a VRdaIfhT 又叫循环移位密码 它的加密方法是将明文中的每个字母用此字符在字母表中后面第 k 个字母替代 它的加密过程可以表示为下面的函数 E m m k mod n p p data id p838747a 4UBLBJHR 其中 p

大家好,我是讯享网,很高兴认识大家。



 <p data-id="pa-VRdaIfhT">又叫循环移位密码.它的加密方法是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数:E(m)=m+k(mod n)</p><p data-id="pa-4UBLBJHR">其中:m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数.</p><pre>#include&nbsp;&lt;stdio.h&gt; 

讯享网

#include&nbsp;&lt;string.h&gt;

//加密 int&nbsp;encrypt(char&nbsp;plaintext,&nbsp;char&nbsp;ciphertext,&nbsp;int&nbsp;k) { &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;z&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;l&nbsp;=&nbsp;strlen(plaintext);&nbsp;//获取明文的长度 &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;l;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断大小写 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(plaintext[i]&nbsp;&gt;=&nbsp;‘A’&nbsp;&&&nbsp;plaintext[i]&nbsp;&lt;=&nbsp;‘Z’)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;(&nbsp;(plaintext[i]&nbsp;-&nbsp;‘A’)&nbsp;+&nbsp;k)&nbsp;%&nbsp;26&nbsp;+&nbsp;‘A’; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(plaintext[i]&nbsp;&gt;=&nbsp;‘a’&nbsp;&&&nbsp;plaintext[i]&nbsp;&lt;=&nbsp;‘z’)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;((plaintext[i]&nbsp;-&nbsp;‘a’)&nbsp;+&nbsp;k)&nbsp;%&nbsp;26&nbsp;+&nbsp;‘a’; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;&nbsp;//判断是否是空格 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;plaintext[i]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z++; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }

//解密 int&nbsp;decrypt(char&nbsp;plaintext,&nbsp;char&nbsp;ciphertext,&nbsp;int&nbsp;k) { &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;z&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;l&nbsp;=&nbsp;strlen(plaintext);&nbsp;//获取明文的长度 &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;l;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断大小写 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(plaintext[i]&nbsp;&gt;=&nbsp;‘A’&nbsp;&&&nbsp;plaintext[i]&nbsp;&lt;=&nbsp;‘Z’)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;(((plaintext[i]&nbsp;-&nbsp;‘A’)&nbsp;-&nbsp;k))&nbsp;%&nbsp;26&nbsp;+&nbsp;‘A’; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(((plaintext[i]&nbsp;-&nbsp;‘A’)&nbsp;-&nbsp;k)&nbsp;&lt;&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;ciphertext[z]&nbsp;+&nbsp;26; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(plaintext[i]&nbsp;&gt;=&nbsp;‘a’&nbsp;&&&nbsp;plaintext[i]&nbsp;&lt;=&nbsp;‘z’)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;(&nbsp;((plaintext[i]&nbsp;-&nbsp;‘a’)&nbsp;-&nbsp;k))&nbsp;%&nbsp;26&nbsp;+&nbsp;‘a’; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(((plaintext[i]&nbsp;-&nbsp;‘a’)&nbsp;-&nbsp;k)&nbsp;&lt;&nbsp;0)&nbsp;{&nbsp;&nbsp;//处理负数 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;ciphertext[z]&nbsp;+&nbsp;26; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;&nbsp;//判断是否是空格 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext[z]&nbsp;=&nbsp;plaintext[i]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z++; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }


讯享网

int&nbsp;main() { &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;plaintext[50]&nbsp;=&nbsp;&quot;&quot;; &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ciphertext[50]&nbsp;=&nbsp;&quot;&quot;; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;k; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;type; &nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请填写明文或者密文: &quot;); &nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%s&quot;,&nbsp;plaintext); &nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请选择加密方式,输入1加密,输入2解密 &quot;); &nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&nbsp;&type); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(type&nbsp;==&nbsp;1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加密 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入密钥k: &quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&nbsp;&k); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encrypt(plaintext,&nbsp;ciphertext,&nbsp;k); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;明文%s的密文为:%s &quot;,&nbsp;plaintext,&nbsp;ciphertext); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(type&nbsp;==&nbsp;2)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//解密 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;请输入密钥k: &quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(&quot;%d&quot;,&nbsp;&k); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decrypt(plaintext,&nbsp;ciphertext,&nbsp;k); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;密文%s的明文为:%s &quot;,&nbsp;plaintext,&nbsp;ciphertext); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }

运行结果:

如何用C语言实现凯撒密码加密解密

如何用C语言实现凯撒密码加密解密


小讯
上一篇 2025-04-18 14:50
下一篇 2025-05-14 17:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193830.html