ホームページ >バックエンド開発 >Python チュートリアル >Python で実装された Caesar 暗号アルゴリズムの例

Python で実装された Caesar 暗号アルゴリズムの例

不言
不言オリジナル
2018-05-05 15:32:339000ブラウズ

この記事では、主に Python で実装されたシーザー暗号アルゴリズムを紹介し、シーザー暗号の概念と原理を簡単に紹介し、Python で実装されたシーザー暗号アルゴリズムの関連する定義と使用テクニックを例の形式で分析します。参考にしてください

この記事では、Python で実装された Caesar 暗号アルゴリズムについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

はじめに

シーザー暗号は非常に古い暗号方式です。シーザーが陸を行軍し、陸で戦っていたとき、と言われています。自分の命令が敵に知られないようにするために、彼はこの特別な通信方法を使用して情報伝達の安全性を確保しました。彼の原理は最終的には非常に単純で、文字間の文字を置き換えることです。簡単な例を見てみましょう。「baidu」はシーザー暗号で暗号化され、文字列は「edlgx」になります。その原理は何ですか? 「baidu」の各文字をアルファベット順に 3 桁後方にシフトすると、その結果が先ほど見た暗号文になります。

2 番目のコード

# -*- coding:utf-8 -*-
import os
#==================================================================#
#     凯撒密码(caesar)是最早的代换密码,对称密码的一种        #
#  算法:将每个字母用字母表中它之后的第k个字母(称作位移值)替代      #
#==================================================================#
def encryption():
  str_raw = raw_input("请输入明文:")
  k = int(raw_input("请输入位移值:"))
  str_change = str_raw.lower()
  str_list = list(str_change)
  str_list_encry = str_list
  i = 0
  while i < len(str_list):
    if ord(str_list[i]) < 123-k:
      str_list_encry[i] = chr(ord(str_list[i]) + k)
    else:
      str_list_encry[i] = chr(ord(str_list[i]) + k - 26)
    i = i+1
  print ("加密结果为:"+"".join(str_list_encry))
def decryption():
  str_raw = raw_input("请输入密文:")
  k = int(raw_input("请输入位移值:"))
  str_change = str_raw.lower()
  str_list = list(str_change)
  str_list_decry = str_list
  i = 0
  while i < len(str_list):
    if ord(str_list[i]) >= 97+k:
      str_list_decry[i] = chr(ord(str_list[i]) - k)
    else:
      str_list_decry[i] = chr(ord(str_list[i]) + 26 - k)
    i = i+1
  print ("解密结果为:"+"".join(str_list_decry))
while True:
  print (u"1. 加密")
  print (u"2. 解密")
  choice = raw_input("请选择:")
  if choice == "1":
    encryption()
  elif choice == "2":
    decryption()
  else:
    print (u"您的输入有误!")

3 つの実行結果

関連する推奨事項:

セットのすべてのサブセットを検索する例Python で

Python が実装しますLR クラシックアルゴリズム

以上がPython で実装された Caesar 暗号アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。