当前位置:   article > 正文

密码学:凯撒密码原理、解密、加密(C语言示例)_凯撒加密c语言

凯撒加密c语言

原理:

凯撒密码:它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文

例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

注意:凯撒密码的偏移方向并无固定,可以是前移也可以是后移。在实际应用中,无论向左还是向右,只要偏移量是预先约定好的,并且加密与解密双方使用相同的规则,就可以正确地进行信息传递和还原。

解密

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main() {
  4. char s[20], r[20];
  5. int n;
  6. printf("请输入密文(凯撒解密):");
  7. fgets(s, sizeof(s), stdin);
  8. s[strcspn(s, "\n")] = '\0'; // 移除可能的换行符
  9. printf("请输入偏移量:");
  10. scanf("%d", &n);
  11. int len = strlen(s);
  12. for (int i = 0; s[i] != '\0' && i < len; i++) {
  13. if (s[i] >= 'A' && s[i] <= 'Z') {
  14. r[i] = ((s[i] - 'A' - n + 26) % 26) + 'A'; // 对于大写字母,解密时应当减去偏移量
  15. } else if (s[i] >= 'a' && s[i] <= 'z') {
  16. r[i] = ((s[i] - 'a' - n + 26) % 26) + 'a'; // 对于小写字母,解密时同样减去偏移量
  17. } else {
  18. r[i] = s[i]; // 其他非字母字符原样复制
  19. }
  20. }
  21. // 给解密结果字符串添加终止符
  22. r[len] = '\0';
  23. printf("解密后的明文为:");
  24. for (int i = 0; r[i] != '\0'; i++) {
  25. printf("%c", r[i]);
  26. }
  27. return 0;
  28. }

示例:

密文:simplessn

偏移量:3    (因为是左移解密,实际上是-3)

明文:pfjmibppk

加密

加密与解密代码类似,只需将偏移量相同,修改偏移方向即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/496490
推荐阅读
相关标签
  

闽ICP备14008679号