【Python】玩转简单加密

本文介绍了Python中简单的加密方法,从串到串的对照表加密开始,逐步通过函数化、行数缩减和局部重用来优化加密过程。讨论了函数在提高代码可读性、重用性和命名空间隔离方面的作用,以及如何使用索引位置平移法实现加密解密。
摘要由CSDN通过智能技术生成

视频地址:北邮《Python编程与实践》课程 (2020)

文字的加密

替换式密码:又名取代加密法,是密码学中按规律将文字加密的一种方式。替换式密码中可以用不同字母数为一单元,例如每一个或两个字母为一单元,然后再作加密。密文接收者解密时需用原加密方式解码才可取得原文本。
简易替换密码:简易替换加密是一种以特定方式改变字母表上字母顺序,并以此顺序书写的加密方式。这样一张改变了字母次序的字母表即为‘替换表’。替换表可以以偏移或逆转(分别为凯撒密码和阿特巴希密码(英语:Atbash))或更复杂方式构造,此时称之为‘混合表’。

在这里插入图片描述

1、串到串(对照表)式的加密/解密直接顺序实现

【Python基础】字符串

alphabet_src = 'abcdefghijklmnopqrstuvwxyz'
alphabet_tar = 'defghijklmnopqrstuvwxyzabc'


src_str = 'I love you!'
encrypted_str= ''
for single_char in src_str:
    if single_char in alphabet_src:
        index = alphabet_src.index(single_char)
        encrypted_str = encrypted_str + alphabet_tar[index]
    else:
        encrypted_str = encrypted_str + single_char
print(encrypted_str)


encrypted_str = 'I oryh brx!'
decrypted_str = ''
for single_char in encrypted_str:
    if single_char in alphabet_src:
        index = alphabet_tar.index(single_char)
        decrypted_str = decrypted_str + alphabet_src[index]
    else:
        decrypted_str = decrypted_str + single_char
print(decrypted_str)
2、为了改善可读性、方便重用、隔离命名空间用函数实现

【Python基础】函数

函数的好处:

  • 改善可读性
  • 方便重用
  • 隔离命名空间
global alphabet_src, alphabet_tar

函数信息的说明:

  • 参数及返回值类型说明原信息
def encrypt_it(src_str: str) -> str:
def decrypt_it(encrypted_str: str) -> str:
  • 函数说明文档
'''用于对字符串进行简单替换加密
输入参数:
src_str: 原始文本内容
返回结果:加密/解密文本
'''

用断言验证加密/解密函数功能是否正常:

assert(decrypt_it(encrypt_it('abcdefghijklmnopqrstuvwxyz')) \
    == 'abcdefghijklmnopqrstuvwxyz')

最终代码:

alphabet_src = 'abcdefghijklmnopqrstuvwxyz'
alphabet_tar = 'defghijklmnopqrstuvwxyzabc'


def encrypt_it(src_str: str) -> str:
    '''用于对字符串进行简单替换加密
    输入参数:
    src_str:原始文本内容
    返回结果:加密/解密文本
    '''
    global alphabet_src, alphabet_tar
    encrypted_str = ''
    for single_char in src_str:
        if single_char in alphabet_src:
            index = alphabet_src.index(single_char)
            encrypted_str = encrypted_str + alphabet_tar[index]
        else
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值