当前位置:   article > 正文

【趣味算法】凯撒密码(含源码)_实现凯撒密码c代码

实现凯撒密码c代码

需求

凯撒密码(Caesar cipher)是一种简单的替换加密方法,它将文本中的每个字母都向后(或向前)移动固定数量的位置。

实现

C语言

以下是一个C语言示例,用于实现凯撒密码的加密和解密功能。

#include <stdio.h>
#include <string.h>

// 凯撒密码加密函数
void caesar_encrypt(char *text, int key) {
    for (int i = 0; i < strlen(text); i++) {
        char ch = text[i];

        // 对字母进行加密
        if (isalpha(ch)) {
            if (islower(ch)) {
                text[i] = 'a' + (ch - 'a' + key) % 26;
            } else if (isupper(ch)) {
                text[i] = 'A' + (ch - 'A' + key) % 26;
            }
        }
    }
}

// 凯撒密码解密函数
void caesar_decrypt(char *text, int key) {
    caesar_encrypt(text, 26 - key); // 解密即加密的逆操作
}

int main() {
    char text[100];
    int key;

    printf("请输入要加密的文本: ");
    gets(text);
    printf("请输入加密/解密密钥 (位移数): ");
    scanf("%d", &key);

    caesar_encrypt(text, key);
    printf("加密后的文本: %s\n", text);

    caesar_decrypt(text, key); // 解密文本
    printf("解密后的文本: %s\n", text);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

原理解释

在这个C语言示例中,我们定义了两个函数,caesar_encrypt 用于加密文本,caesar_decrypt 用于解密文本。用户输入要加密的文本和加密密钥,然后程序将对文本进行加密,并显示加密后的结果,随后进行解密操作以验证。

请注意,这只是一个基本的凯撒密码示例,不是用于安全通信的安全加密方法。在实际应用中,需要更强大的加密算法。

JavaScript 实现

以下是一个用JavaScript实现的简单凯撒密码加密和解密的示例:

// 凯撒密码加密函数
function caesarEncrypt(text, key) {
    let result = '';
    for (let i = 0; i < text.length; i++) {
        let char = text[i];
        if (/[a-zA-Z]/.test(char)) {
            let isUpperCase = char === char.toUpperCase();
            let offset = isUpperCase ? 65 : 97;
            let encryptedChar = String.fromCharCode((char.charCodeAt(0) - offset + key) % 26 + offset);
            result += isUpperCase ? encryptedChar : encryptedChar.toLowerCase();
        } else {
            result += char;
        }
    }
    return result;
}

// 凯撒密码解密函数
function caesarDecrypt(text, key) {
    return caesarEncrypt(text, 26 - key); // 解密即加密的逆操作
}

// 测试
let originalText = "Hello, World!";
let encryptionKey = 3;

let encryptedText = caesarEncrypt(originalText, encryptionKey);
console.log("加密后的文本: " + encryptedText);

let decryptedText = caesarDecrypt(encryptedText, encryptionKey);
console.log("解密后的文本: " + decryptedText);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

原理解释

这个JavaScript示例定义了 caesarEncrypt 函数用于加密文本,以及 caesarDecrypt 函数用于解密文本。您可以调用这些函数来进行加密和解密操作。在示例中,我们将 “Hello, World!” 用凯撒密码进行加密,然后解密以验证。您可以修改 originalTextencryptionKey 变量来测试不同的文本和密钥。

Python 实现

以下是一个用Python实现的简单凯撒密码加密和解密的示例:

# 凯撒密码加密函数
def caesar_encrypt(text, key):
    encrypted_text = ""
    for char in text:
        if char.isalpha():  # 仅对字母进行加密
            shift = 65 if char.isupper() else 97
            encrypted_char = chr((ord(char) - shift + key) % 26 + shift)
            encrypted_text += encrypted_char
        else:
            encrypted_text += char
    return encrypted_text

# 凯撒密码解密函数
def caesar_decrypt(text, key):
    return caesar_encrypt(text, -key)  # 解密即加密的逆操作

# 测试
original_text = "Hello, World!"
encryption_key = 3

encrypted_text = caesar_encrypt(original_text, encryption_key)
print("加密后的文本:", encrypted_text)

decrypted_text = caesar_decrypt(encrypted_text, encryption_key)
print("解密后的文本:", decrypted_text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

原理解释

这个Python示例定义了 caesar_encrypt 函数用于加密文本,以及 caesar_decrypt 函数用于解密文本。您可以调用这些函数来进行加密和解密操作。在示例中,我们将 “Hello, World!” 用凯撒密码进行加密,然后解密以验证。您可以修改 original_textencryption_key 变量来测试不同的文本和密钥。

总结

以上就是本文所有内容了,希望能对你有所帮助,能够解决凯撒密码问题。

如果你喜欢本文,也请务必点赞、收藏、评论、转发,这会对我有非常大的帮助。请我喝杯冰可乐也是极好的!

已完结,欢迎持续关注。下次见~

附件

源码下载

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

闽ICP备14008679号