鱼C论坛

 找回密码
 立即注册
查看: 2804|回复: 15

[已解决]python中如何实现对中文的凯撒加密

[复制链接]
发表于 2020-6-10 07:36:04 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自己写一个东西的时候涉及到加密问题,想到利用ASCII码来实现,后来查阅资料时发现这叫凯密码,那么这种加密方式如何对中文适用呢
最佳答案
2020-6-10 08:25:57
sehnsucht 发表于 2020-6-10 08:17
……早晨没睡醒,想复杂了

不考虑范围很好做到
a = input('请输入汉字明文:')

# 不考虑汉字 ASCII码范围进行加密
cipher = ''
for i in a:
    cipher+=(chr(ord(i)+3))
print('密文密码为:',cipher)


# 对汉字密文进行解密
clear = ''
for i in cipher:
    clear += (chr(ord(i)-3))
print('明文密码:',clear)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 07:44:25 | 显示全部楼层
asci
ord()
凯撒
chr()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 07:47:56 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-6-10 08:12 编辑

a = ""
b = ""
for each in a:
    b = b + str(ord(each))
print(chr(b))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 07:56:18 | 显示全部楼层
xiaosi4081 发表于 2020-6-10 07:47
a = ""
b = ""
for each in a:

是的,但是如果不考虑中文字符的话,只用考虑128个字符的情况下,对应的解密函数很好写,用到中文的话怎么解密呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 07:59:42 | 显示全部楼层
sehnsucht 发表于 2020-6-10 07:56
是的,但是如果不考虑中文字符的话,只用考虑128个字符的情况下,对应的解密函数很好写,用到中文的话怎么 ...

把chr的2换成-2,再用chr弄一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:05:52 | 显示全部楼层
sehnsucht 发表于 2020-6-10 07:56
是的,但是如果不考虑中文字符的话,只用考虑128个字符的情况下,对应的解密函数很好写,用到中文的话怎么 ...

设个最佳吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:08:09 | 显示全部楼层
sehnsucht 发表于 2020-6-10 07:56
是的,但是如果不考虑中文字符的话,只用考虑128个字符的情况下,对应的解密函数很好写,用到中文的话怎么 ...


你对中文进行凯撒加密应该要找到中文的 ASCII 码范围吧

然后用for 遍历加密,如果加密时 +3 ASCII  那么解密时候就 -3 ASCII
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:09:33 From FishC Mobile | 显示全部楼层
xiaosi4081 发表于 2020-6-10 07:47
a = ""
b = ""
for each in a:

ord得到的不是数字吗?字符串b跟数字相加不报错吗
还有chr不是只接受一个参数吗,两个参数是什么用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:11:07 | 显示全部楼层
hrp 发表于 2020-6-10 08:09
ord得到的不是数字吗?字符串b跟数字相加不报错吗
还有chr不是只接受一个参数吗,两个参数是 ...

谢谢提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 08:12:49 | 显示全部楼层

是的,,没有看太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 08:14:11 | 显示全部楼层
Twilight6 发表于 2020-6-10 08:08
你对中文进行凯撒加密应该要找到中文的 ASCII 码范围吧

然后用for 遍历加密,如果加密时 +3 ASCII   ...

是的,我在找范围中……不知道有什么更简单的方式,这个范围好像挺大的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 08:17:30 | 显示全部楼层
Twilight6 发表于 2020-6-10 08:08
你对中文进行凯撒加密应该要找到中文的 ASCII 码范围吧

然后用for 遍历加密,如果加密时 +3 ASCII   ...

……早晨没睡醒,想复杂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:17:47 | 显示全部楼层
sehnsucht 发表于 2020-6-10 08:14
是的,我在找范围中……不知道有什么更简单的方式,这个范围好像挺大的

我去查了下 百度也没明确访问,应该是因为中途穿插着字符吧? 如果找出范围就好办了,难点就在汉字 ASCII码范围问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:25:57 | 显示全部楼层    本楼为最佳答案   
sehnsucht 发表于 2020-6-10 08:17
……早晨没睡醒,想复杂了

不考虑范围很好做到
a = input('请输入汉字明文:')

# 不考虑汉字 ASCII码范围进行加密
cipher = ''
for i in a:
    cipher+=(chr(ord(i)+3))
print('密文密码为:',cipher)


# 对汉字密文进行解密
clear = ''
for i in cipher:
    clear += (chr(ord(i)-3))
print('明文密码:',clear)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 08:38:31 | 显示全部楼层
Twilight6 发表于 2020-6-10 08:25
不考虑范围很好做到

对,我想到了,考虑到汉字后面还有很多字符,所以不需要考虑范围,一开始是想实现一个一一对应的的密码,所以一直在想范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 08:40:54 | 显示全部楼层
sehnsucht 发表于 2020-6-10 08:38
对,我想到了,考虑到汉字后面还有很多字符,所以不需要考虑范围,一开始是想实现一个一一对应的的密码, ...

哈哈~  那问题解决了 ,就给个最佳~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表