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

为什么我的caeser密码只打印字符串的最后一个字母?python

Caeser密码是一种简单的替换密码,它通过将字母按照一定的偏移量进行替换来加密消息。在Python中,如果你的Caeser密码只打印字符串的最后一个字母,可能是因为你在代码中只处理了最后一个字符。

要解决这个问题,你需要遍历整个字符串,并对每个字符进行加密或解密操作。下面是一个示例代码,展示了如何实现Caeser密码的加密和解密功能:

代码语言:python
代码运行次数:0
复制
def caeser_encrypt(message, shift):
    encrypted_message = ""
    for char in message:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            encrypted_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
            encrypted_message += encrypted_char
        else:
            encrypted_message += char
    return encrypted_message

def caeser_decrypt(encrypted_message, shift):
    decrypted_message = ""
    for char in encrypted_message:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            decrypted_char = chr((ord(char) - ascii_offset - shift) % 26 + ascii_offset)
            decrypted_message += decrypted_char
        else:
            decrypted_message += char
    return decrypted_message

message = "Hello, World!"
shift = 3

encrypted_message = caeser_encrypt(message, shift)
print("Encrypted message:", encrypted_message)

decrypted_message = caeser_decrypt(encrypted_message, shift)
print("Decrypted message:", decrypted_message)

在上述代码中,caeser_encrypt函数接受一个消息和一个偏移量,将消息中的每个字母按照偏移量进行加密,并返回加密后的消息。caeser_decrypt函数接受一个加密后的消息和一个偏移量,将加密后的消息中的每个字母按照偏移量进行解密,并返回解密后的消息。

这样,你就可以正确地加密和解密Caeser密码了。记得在使用Caeser密码时,要保持加密和解密时使用的偏移量一致,才能正确还原原始消息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【C语言】字符函数与字符串函数以及内存函数

    字符分类函数包含在 <ctype.h> 头文件下,专门用来分类字符,如果是则返回非0数字,如果不是返回0 1、iscntrl(int c): 检查是否为控制字符(非打印字符,ASCII码在0x00至0x1F之间,以及0x7F(DEL)) 2、isspace(int c): 检查是否为空白字符(空格、制表符、换行符、垂直制表符、换页符和回车符) 3、isdigit(int c): 检查是否为数字(0至9) 4、isxdigit(int c): 检查是否为十六进制数字(0至9,a至f,A至F) 5、islower(int c): 检查是否为小写字母(a至z) 6、isupper(int c): 检查是否为大写字母(A至Z) 7、isalpha(int c): 检查是否为字母(大写或小写) 8、isalnum(int c): 检查是否为字母或数字 9、ispunct(int c): 检查是否为标点符号(除空格和字母数字字符外的可打印字符) 10、isgraph(int c): 检查是否为除空格外的可打印字符 11、isprint(int c): 检查是否为可打印字符(包括空格)

    01

    Python 练习100题---No.(1-20)---附其他题目解答链接

    github展示python100题 链接如下: https://github.com/zhiwehu/Python-programming-exercises/blob/master/100%2B%20Python%20challenging%20programming%20exercises.txt 以下为博主翻译后题目及解答,答案代码分为两个,第一条为博主个人解答(Python3),第二条为题目所提供答案(Python2) ……………………………………………………………………………… 本部分为题目1-20,等级难度1-3升序; 题目21-40链接:https://blog.csdn.net/weixin_41744624/article/details/103511139 题目41-60链接:https://blog.csdn.net/weixin_41744624/article/details/103575741 题目61-80链接: https://blog.csdn.net/weixin_41744624/article/details/103607992 题目81-98链接:https://blog.csdn.net/weixin_41744624/article/details/103646520 经检测题库去除重复只有98题啦(欢迎评论添加好题目)~ ……………………………………………………………………………… 1、问题:

    02

    C语言函数小集合

    一、字符操作 函数名: fputc 功 能: 送一个字符到一个流中 用 法: int fputc(int ch, FILE *stream); 函数名: fputs 功 能: 送一个字符串到一个流中 用 法: int fputs(char *string, FILE *stream); 函数名: sprintf 功 能: 输出数据到一字符串中(而printf是输出到屏幕上) 函数名: fread 用 法: fread(fa,4,5,fp); 功 能: 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中 函数名: strncmp 用 法: extern int strncmp(char *s1, char *s2, int n); 功 能: 比较字符串s1和s2的前n个字符。 详 细: 逐次比较两个字符串前n个字符中的每一个字符(用第一个字符串的字符的ASCII值减去第二个字符串的相应字符的ASCII值),如果相等则继续比较下一个;如果不等,ASCII的差值就是返回值。 函数名: isalnum 原型:extern int isalnum(int c); 用法:#include <ctype.h>  功能:判断字符c是否为字母或数字  说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。 函数名: isalpha 原型:extern int isalpha(int c); 用法:#include <ctype.h> 功能:判断字符c是否为英文字母 说明:当c为英文字母a-z或A-Z时,返回非零值,否则返回零。 函数名: iscntrl 原型:extern int iscntrl(int c); 用法:#include <ctype.h> 功能:判断字符c是否为控制字符 说明:当c在0x00-0x1F之间或等于0x7F(DEL)时,返回非零值,否则返回零。 函数名: isdigit 原型:extern int isdigit(int c); 用法:#include <ctype.h> 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零。 函数名: islower 原型:extern int islower(int c); 用法:#include <ctype.h> 功能:判断字符c是否为小写英文字母 说明:当c为小写英文字母(a-z)时,返回非零值,否则返回零。 函数名: isascii 原型:extern int isascii(int c); 用法:#include <ctype.h> 功能:判断字符c是否为ascii码 说明:当c为ascii码时,返回非零值,否则返回零。ascii码指0x00-0x7F之间的字符 函数名: isgraph 原型:extern int isgraph(int c); 用法:#include <ctype.h> 功能:判断字符c是否为除空格外的可打印字符 说明:当c为可打印字符(0x21-0x7e)时,返回非零值,否则返回零。 函数名: isprint 原型:extern int isprint(int c); 用法:#include <ctype.h> 功能:判断字符c是否为可打印字符(含空格) 说明:当c为可打印字符(0x20-0x7e)时,返回非零值,否则返回零。 函数名: ispunct 原型:extern int ispunct(int c); 用法:#include <ctype.h> 功能:判断字符c是否为标点符号 说明:当c为标点符号时,返回非零值,否则返回零。 标点符号指那些既不是字母数字,也不是空格的可打印字符。 函数名: isspace 原型:extern int isspace(int c); 用法:#include <ctype.h> 功能:判断字符c是否为空白符 说明:当c为空白符时,返回非零值,否则返回零。 空白符指空格、水平制表、垂直制表、换页、回车和换行符。 函数名: isupper 原型:extern int isupper(int c);  用法:#include <ctype.h>  功能:判断字符c是否为大写英文字母 说明:当c为大写英文字母(A-Z)时,返回非零值,否则返回零。 函数名: isxdigit 原型:extern int isxdigit(int c); 用法:#include <ctype.h> 功能:判断字符c是否为十六进制数字 说明:当c为A-F,a-f或0-9之间的十六进制数字时,返回非零值,否则返回零。 函数名: toascii 原型:extern int toascii(int c);

    02
    领券