Python密码学编程(2)凯撒加密法

本文介绍了Python实现凯撒密码的详细步骤,包括导入模块、定义常量、使用upper()和lower()方法、for循环、if/elif/else语句、in和not in运算符以及find()方法。通过示例代码展示了加密和解密过程。
摘要由CSDN通过智能技术生成

凯撒密码及其Python实现

主要内容:

  • import语句
  • 常量
  • upper()字符串方法
  • for循环
  • if、elif和else语句
  • in和not in语句
  • find()字符串方法

2.1 实现程序

  • 凯撒加密算法的密钥是0到25的整数

2.2凯撒加密算法的源代码

# Caesar Cipher
# Source code for caesarCipher

import pyperclip

# the string to be encrypted or decrypted
message = 'This is my secret message.'

# the encryption or decryted key
key = 13

# tells the program to encrypt or decrypt
mode = 'encrypt'  # set to 'encrypt' or 'decrypt'

# every possible symbol that can be encrypted
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

# stores the encrypted/decrypted form of the message
translated = ' '

# capitalize the string in message
message = message.upper()

# run the encryption/decryption code on each symbol in the message strring
for symbol in message:
    if symbol in LETTERS:
        # get the encryption(or decryption) number for this symbol
        num = LETTERS.find(symbol)  # get the number of the symbol
        if mode == 'encrypt':
            num = num + key
        elif mode == 'decrypt':
            num = num - key

        # handle the wrap-around if num is larger than the length of
        # LETTERS or less than 0
        if num >= len(LETTERS):
            num = num - len(LETTERS)
        elif num < 0:
            num = num + len(LETTERS)

        # add encryption/decryption number's symbol at the end of translated
        translated = translated + LETTERS[num]

    else:
        # just add the symbol without encrypting/decrypting
        translated = translated + symbol

# print the encrypted/decrypted string to the screen
print(translated)

# copy the encrypted/decrypyed string to the screen
pyperclip.copy(translated)

2.3 运行凯撒加密法程序

执行程序时,输出结果为: GUVF VF ZL FRPERG ZRFFNTR.

解密时,把这行文字粘贴为新值,保存到第7行的message变量。然后修改第13行的赋值语句,在mode变量里保存’decrypt’字符串:

# the string to be encrypted or decrypted
message = 'GUVF VF ZL FRPERG ZRFFNTR.'

# the encryption or decryted key
key = 13
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值