本文发布于 2020-06-03, 最后更新于 2275 天前,其中的信息可能已经有所发展或是发生改变。

文章摘要

本为解决VB的凯撒加密问题: 由于VB中的mod会取到负数,比如-1 mod 26得到的是-1 因此当偏移量n为负数时,加密字符的ASCII编码会越出ASCII编码的范围(a的编码为97,它将变为96) 而我想要的是字母表循环,所以也就不能的得到正确的加密字符串 但发现python很好的解决了这个问题 -1 mod 26 为 25 下面直接发代码 def StrEncrypt( # 待加密字符串 …

本为解决VB的凯撒加密问题:

<strong>由于VB中的mod会取到负数,比如-1 mod 26得到的是-1
因此当偏移量n为负数时,加密字符的ASCII编码会越出ASCII编码的范围(a的编码为97,它将变为96)
而我想要的是字母表循环,所以也就不能的得到正确的加密字符串</strong>

但发现python很好的解决了这个问题 -1 mod 26 为 25

下面直接发代码

dns (Auto identified)
def StrEncrypt( # 待加密字符串 ordstr, # 偏移量 npos): productstr = "" strlen = len(ordstr) for i in range(strlen): asc = ord(ordstr[i]) # 如果在字母表范围内就进行偏移 if(asc >= ord('a') and asc <= ord('z')): productstr += chr((ord(ordstr[i]) - ord('a') + npos) % 26 + ord('a')) elif(asc >= ord('A') and asc <= ord('Z')): productstr += chr((ord(ordstr[i]) - ord('A') + npos) % 26 + ord('A')) # 如果不在就直接连接字符串 else: productstr += ordstr[i] return productstr def StrDecrypt( # 待解密字符串 ordstr, # 偏移量 npos): productstr = "" strlen = len(ordstr) for i in range(strlen): asc = ord(ordstr[i]) # 如果在字母表范围内就进行偏移 if(asc >= ord('a') and asc <= ord('z')): productstr += chr((ord(ordstr[i]) - ord('a') - npos) % 26 + ord('a')) elif(asc >= ord('A') and asc <= ord('Z')): productstr += chr((ord(ordstr[i]) - ord('A') - npos) % 26 + ord('A')) # 如果不在就直接连接字符串 else: productstr += ordstr[i] return productstr def StrKeyEncrypt( # 待加密字符串 ordstr, # 偏移量 key): productstr = "" strlen = len(ordstr) keylen = len(key) for i in range(strlen): asc = ord(ordstr[i]) # 如果在字母表范围内就进行偏移 npos = int(key[i % keylen]) # 取key if(asc >= ord('a') and asc <= ord('z')): productstr += chr((ord(ordstr[i]) - ord('a') + npos) % 26 + ord('a')) elif(asc >= ord('A') and asc <= ord('Z')): productstr += chr((ord(ordstr[i]) - ord('A') + npos) % 26 + ord('A')) # 如果不在就直接连接字符串 else: productstr += ordstr[i] return productstr def StrKeyDecrypt( # 待解密字符串 ordstr, # 偏移量 key): productstr = "" strlen = len(ordstr) keylen = len(key) for i in range(strlen): asc = ord(ordstr[i]) # 如果在字母表范围内就进行偏移 npos = int(key[i % keylen]) # 取key if(asc >= ord('a') and asc <= ord('z')): productstr += chr((ord(ordstr[i]) - ord('a') - npos) % 26 + ord('a')) elif(asc >= ord('A') and asc <= ord('Z')): productstr += chr((ord(ordstr[i]) - ord('A') - npos) % 26 + ord('A')) # 如果不在就直接连接字符串 else: productstr += ordstr[i] return productstr

借用老师的电脑发布的博文

九仞之行

严于律己,宽以待人,深自警省,讷言敏行

订阅
💬 评论 (0)

还没有评论呢 ~ 快来抢沙发吧 🛋️

编辑器加载中…