密码学编程——凯撒加密

凯撒加密原理:

         凯撒加密法,这种加密法曾在两千年前被凯撒大帝用过,主要用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 8位,则 字母 A 将变为Q,字母 B 将变为R,…,字母 X 变成 N,字母 Y 则变为 O,字母 Z 变为 P。其中右移8位的,8就是加密密钥;

如何用程序实现:

         把字母表的字母从A到Z写下来,在每个字母下面写下数字0到25。在A下面写0, B 下面写1,如此类推,直到在Z下面写25 (字母表里有26个字母,但我们的数字最多只到 25,因为我们从0而不是1开始的)。

        现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这 个和就是加密的字母下面的数字。如,我们使用密钥13加密“Hello. How are you?”。首先, 我们找到H下面的数字,是7。接着,我们把密钥加上这个数字,7+13=20。数字20在字 母U下面,这意味着字母H加密成字母U。如果要加密字母E,我们把E下面的4加上13, 得到17。17上面的字母是R,因此E加密成R。如此类推。 直到我们遇上字母O时这个方法才会岀问题。O下面的数字是14,当把14加上13时, 我们得到27。但我们的数字列表最多只到25。如果字母的数字和密钥之和超过26,我们应 该减去26, 27-26得到1。数字1上面的字母是B。于是,当使用密钥13时,字母O加密 成字母B。 个接 个地,我们可以把“HELLO. HOW ARE YOU?”里的字母加密成“URYYB. UBJ NER LBH?”。 

代码:


message = 'This is my secret message.'

#the encrypted/decrypted key
key = 8

#set to 'encrypt' or 'decrypted'
mode = 'encrypt'

#Encryption Strength 'H' or 'L'
strengthen = 'L'

if strengthen == 'L':
    LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
else:
    LETTERS = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'

translated = ''

message = message.upper()

for symbol in message:
    if symbol in LETTERS:

        num = LETTERS.find(symbol)
        if mode == 'encrypt':
            num = num + key
        elif mode == 'decrypt':
            num = num - key


        if num >= len(LETTERS):
            num = num - len(LETTERS)
        elif num < 0:
            num = num + len(LETTERS)


        translated = translated + LETTERS[num]

    else:

        translated = translated + symbol
print(translated)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xweb3q

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值