不弃_ 发表于 2022-1-30 10:22:00

新手疑惑

标识那句看不懂,请求大佬解惑{:5_92:}

wp231957 发表于 2022-1-30 10:24:20

都不说你的代码是实现什么功能吗   

python爱好者. 发表于 2022-1-30 10:30:26

base 是起始值,
key 是偏移值,
%26 是为了防止泄露,
ord() 是得到一个字符串的编码,
chr() 相反,接触上面加工后的编码!

翼是孤独 发表于 2022-1-30 11:54:30

意思就是把你输入的明文 偏移key位(大小写保持)
比如:
明文: AbCdEf
key=2
密文就是CdEfGh

不弃_ 发表于 2022-1-30 16:14:25

python爱好者. 发表于 2022-1-30 10:30
base 是起始值,
key 是偏移值,
%26 是为了防止泄露,


不知道为啥这样写,难道不能直接相加吗(chr(ord(each)+key))?

不弃_ 发表于 2022-1-30 16:15:30

翼是孤独 发表于 2022-1-30 11:54
意思就是把你输入的明文 偏移key位(大小写保持)
比如:
明文: AbCdEf


懂,不知为啥这样写

python爱好者. 发表于 2022-1-30 16:36:08

会泄露的

python爱好者. 发表于 2022-1-30 16:36:38

不用管这些,这是公式,套就完了!

翼是孤独 发表于 2022-1-30 16:38:04

本帖最后由 翼是孤独 于 2022-1-30 16:41 编辑

ord(ch) 表示 取字符ch的ASCII码
chr(256范围内的整数) 将整数转为对应ASCII字符

                                                      含义                                                         当each = y,key = 3
                                                                                                                  
base                                                a 或者 A 的ASCII 码                                          base = a的ASCII码

ord(each)                                             each 的ASCII                                                 y的ASCII码

ord(each) - base                                    each字符相对于 a 或者 A 的位置                               y相对a的位置

ord(each) - base + key                              each偏移key位的字符相对于 a 或者 A 的位置                  y偏移3位相对a的位置

(ord(each) - base + key) % 26                         字母只有26个,相对a(或者A)的位置超过 26 就                   b相对a的位置   
                                                      不是相同大小写的字母(或者不是字母)了,所以取个余

(ord(each) - base + key) % 26 + base                  each偏移key位字符 的ASCII码                                  b的ASCII码

chr((ord(each) - base + key) % 26 + base )            each偏移key位的字符                                          y偏移3位的结果是b

不弃_ 发表于 2022-1-30 21:48:20

翼是孤独 发表于 2022-1-30 16:38


懂,感谢大哥{:5_95:}
页: [1]
查看完整版本: 新手疑惑