teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

暗号文の追加

2021/06/07 02:09

投稿

asianLad
asianLad

スコア16

title CHANGED
File without changes
body CHANGED
@@ -33,4 +33,57 @@
33
33
  else:
34
34
  print('account "' + account + '" dosen\'s exist')
35
35
 
36
+ ```
37
+
38
+
39
+ 例えばこのような簡単なシーザー暗号化のコードを用意したのですが、もしこのような暗号化のコードをどのようにして上記のPWマネージャーのコードと組み合わせれば良いのでしょうか?
40
+ そもそも使えない場合は以下のコードは無視してください。
41
+
42
+ ```Python
43
+ # シーザー暗号
44
+ # https://www.nostarch.com/crackingcodes/ (BSD Licensed)
45
+
46
+ import pyperclip
47
+
48
+ # 暗号化、復号化する文字列
49
+ message = "This is me message"
50
+
51
+ #暗号化、復号化の鍵
52
+ key = 21
53
+
54
+ #プログラムが暗号化するか復号化するか
55
+ mode = "encrypt" # Choose either encrypt or decrypt
56
+
57
+ # 暗号化できるシンボルの全候補
58
+ SYMBOLS = "ABCDEFGHIJKLMNOPQRSTYVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?."
59
+
60
+ #メッセージの暗号化、復号化の結果を格納する
61
+ translated = ""
62
+
63
+ for symbol in message:
64
+ #注意:文字列SYMBOLに含まれるシンボルのみを暗号化、復号化する
65
+ if symbol in SYMBOLS:
66
+ symbolIndex = SYMBOLS.find(symbol)
67
+
68
+ #暗号化、復号化する
69
+ if mode == "encrypt":
70
+ translatedIndex = symbolIndex + key
71
+ elif mode == "decrypt":
72
+ translatedIndex = symbolIndex - key
73
+
74
+ #必要に応じてラップアラウンド処理をする
75
+ if translatedIndex >= len(SYMBOLS):
76
+ translatedIndex = translatedIndex - len(SYMBOLS)
77
+ elif translatedIndex < 0:
78
+ translatedIndex = translatedIndex + len(SYMBOLS)
79
+
80
+ translated = translated + SYMBOLS[translatedIndex]
81
+ else:
82
+ #暗号化、復号化せずにシンボルを追加する
83
+ translated = translated + symbol
84
+
85
+ #変換後の文字列を出力する
86
+ print(translated)
87
+ pyperclip.copy(translated)
88
+
36
89
  ```