Python学习 您所在的位置:网站首页 python加密字符串到字母后一位怎么写的 Python学习

Python学习

2024-06-13 06:38| 来源: 网络整理| 查看: 265

1、加密原理

       基于按位异或(^),对字符串进行简单的加密算法原理:

ord('A')^ord('P') #加密,运算结果:17 chr(17^ord('p')) #解密,运算结果:‘A’ 2、例题

        给定字符串text作为明文(要加密的原文,同上述A)和key作为密钥(同上述P),使用按位异或循环处理text的每一个字符达到加密效果,结果就是加密后的密文(同上述加密运算结果17);解密需将密文转为明文。

from itertools import cycle def crypt(text,key): result = [] #定义一个空的列表用来存放密语 keys = cycle(key) #迭代器,用于迭代密钥的每一个字符 for ch in text: result.append(chr(ord(ch)^ord(next(keys)))) #逐字加密并将结果添加到result列表中 return ''.join(result) #return在循环体外 #test if __name__ == '__main__': plain = 'The quick brown fox jumps over the lazy dog' #明文 key = 'Python_1' #密钥 print('加密前明文:{}'.format(plain)) encrypted = crypt(plain,key) #加密 print('加密后的密文:{}'.format(encrypted)) decrypted = crypt(encrypted,key) #解密 print('解密后的明文:{}'.format(decrypted)) 3、详解

(1)itertools库,提供高效循环和迭代的工具,库中包含了许多用于迭代的函数。此例使用cycle()函数用来创建无限循环的可迭代对象:keys = cycle(key),进而在循环语句中next(keys)可以循环反复地取key地每个字符。例如:key = ‘zxcvb’,那么第一次循环next(keys)=‘z’,第二次循环next(keys)=‘x’,第三次循环next(keys)=‘c’,第四次循环next(keys)=‘v’,第五次循环next(keys)=‘b’,第六次循环next(keys)=‘z’……

(2)return语句应在循环体外,否则在第一次循环后生成result后直接执行return语句便会提前结束函数的执行;若要在循环中返回多个值,考虑yield语句生成一个生成器,多次返回值并保持函数的执行状态,直到完全被迭代。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有