[经典密码]--caesar(python版本)

  本文介绍的是caesar的操作流程,非原版本。下面请看代码:
  

  #!/usr/bin/python
  
  """
  ecb -- (electronic codebook mode)
  
  Please use 'encrypt' or 'decrypt', string letters use \"\", key is number.
  
  """
  
  def encrypt(message, key):
    #s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"'()*,.=?`{}@- :;\t\n\r"                                  #源始转码
    s = "abcdefghijklmnopqrstuvwxyz"        #原始转码
    l = len(message)
    l1 = []
    l2 = []
    lns = []
    for i in range(0, l):
        d = s.find(message[i])              #字符转数字
        l1.append(d)
    for i in range(0, len(message)):
        c = (l1[i] + key) % len(s)          #caesar加密核心
        l2.append(c)
    ln = len(l2)
    for i in range(0, ln):
        d = s[l2[i]]                        #输出数字转字母
        lns.append(d)
    l3 = lns
    return(''.join(l3))
  
  def decrypt(message, key):
    #s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"'()*,.=?`{}@- :;\t\n\r"                                  #原始转码
    s = "abcdefghijklmnopqrstuvwxyz"        #原始转码
    l = len(message)
    l1 = []
    l2 = []
    lns = []
    for i in range(0, l):
        d = s.find(message[i])              #字母转数字
        l1.append(d)
    for i in range(0, len(message)):
        c = (l1[i] - key) % len(s)              #caesar解码核心
        l2.append(c)
    ln = len(l2)
    for i in range(0, ln):
        d = s[l2[i]]                        #输出数字转字母
        lns.append(d)
    l3 = lns
    return(''.join(l3))

  有人可能会想知道为什么“我”不使用list.clear()(或诸如此类的方式)清理垃圾–原因不详。
  使用起来非常简单,可以是终端、命令行交互端、程序(import caesar)。
  例如:
  命令行交互端:
  >>> import caesar
  >>> caesar.encrypt(‘test’,3)
  ‘whvw’
  >>>
  程序:
  ……
  如果对本程序有任何问题,欢迎留言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值