c - 在 C 中使用简单的 Cesar 密码

标签 c encryption caesar-cipher

我在大学的一个项目中工作,他们使用的问题类似于典型的 Cesar Cipher。它更像是一个功能程序,需要是最基本的。

程序将从用户那里收到一个从 6590 的数字,例如当用户插入 65 时将显示 68。将添加 3 数字,但当用户输入 90 时,将输入 6790+3 ---->90,65,66,67。这是一个从 6590 的循环。

#include <stdio.h>

int cesar_encrypted(int x)
{
  return (x+3);
}


void test_cesar_encrypted(void)
{
    int x;
    scanf("%d", &x);
    int z = cesar_encrypted(x);
    printf("%s\n", z);
}

int main(){
    test_cesar_basic();

}

我做了这个示例代码,但我们只能更进一步,如果你给 90 他会给 93 而我想要 67

谁能帮我把它绕到 90 左右?

最佳答案

您可以使用模运算符,它给出除法的余数:

int cesar_encrypted(int x)
{
  return (x - 65 + 3)%(91 - 65) + 65;
}

实现 Sulthan 的建议(见评论),它看起来像这样:

int cesar_encrypted(int x)
{
  const int n_chars = 'Z' - 'A' + 1;
  const int shift = 3;
  return (x - 'A' + shift)%n_chars + 'A';
}

关于c - 在 C 中使用简单的 Cesar 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736540/

相关文章:

c - 使用 fread/fwrite 在 C 中的文件中读写结构

c++ - 使用 VC 编译器在 Eclipse 中创建可执行文件

java - 凯撒密码不打印最终数组

java - 尝试使用 if 语句制作加密方法

c++ - 从 RGB BMP 创建灰度 BMP

在 C 中连接 2 个数组

ios - AES128 在 iOS 7 上截断解密文本,在 iOS 8 上没有问题

c# - AES 加密视频流无法与 iOS 设备中的 azure 媒体播放器配合使用

java - RSA 加密在 Java 中不起作用

c - Print Caesar Shift in C 正在打印输入的 HELLO 文本