3 月 132021
 
"""
凯撒密码
"""
# 导入模块
import pyperclip

# 待加密信息字符串赋值变量
message = 'This is my secret message.'
# message = 'guv6Jv6Jz!J6rp5r7Jzr66ntrM'
# 指定密钥赋值变量
key = 13
# 指定模式为加密或解密并赋值变量
mode = 'encrypt'
# mode = 'decrypt'
# 定义字符并赋值变量
SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
# 定义空字符串赋值变量以存储加解密后的信息
translated = ''

# 定义for循环,遍历待加密消息字符串的每一个字符并赋值变量
for symbol in message:
    # 判断,当待加密消息字符串中字符存在于定义字符集(True)时则执行
    if symbol in SYMBOLS:
        # 使用字符串find()方法在字符串中查找子字符串所在索引值并赋值变量
        # https://docs.python.org/3/library/stdtypes.html#str.find
        symbolIndex = SYMBOLS.find(symbol)

        # 判断当前操作模式为加密或者是解密
        if mode == 'encrypt':
            # 加密模式下,索引值加上密钥值赋值给变量(向后移动)
            translatedIndex = symbolIndex + key
        elif mode == 'decrypt':
            # 解密模式下,索引值减去密钥值赋值给变量(向前移动)
            translatedIndex = symbolIndex - key

        # 判断加解密后字符索引值值大于等于自定义字符集长度值
        if translatedIndex >= len(SYMBOLS):
            # 加解密后字符索引值减去自定义字符集长度并重新赋值给加解密后字符索引值
            translatedIndex = translatedIndex - len(SYMBOLS)
        # 判断加解密后字符索引值小于0时
        elif translatedIndex < 0:
            # 加解密后字符索引值加上自定义字符集长度并重新赋值给加解密后字符索引值
            translatedIndex = translatedIndex + len(SYMBOLS)

        # 使用空字符串值依次拼接使用加解密后字符索引值在自定义字符集中的字符并重新赋值给变量
        translated = translated + SYMBOLS[translatedIndex]

    # 当遍历的待加解密字符不存在于字符集时
    else:
        # 使用空字符串值依次拼接使用遍历的原始字符并重新赋值给变量(即不存在的字符不做加解密)
        translated = translated + symbol

# 打印加解密后的拼接字符串
print(translated)
# 调用模块,将结果复制到剪贴板

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据