Python学习——例题详解1、字符串简单加密和解密

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值