Pythonで暗号化と復号を簡単に行う方法

Pythonで数列を暗号化する方法を考えます。復号する必要もあります。
排他的論理和を使うと暗号化も復号も簡単です。

def encrypt(src, key=759643):
  dst = src ^ key
  return dst

encryptという関数は元の数値srcとキーとなる数値keyの排他的論理和を返します。
排他的論理和はPythonでは^を使います。

排他的論理和
2進数に変換。
各桁を比較し、同じならば0、違うならば1を返す。
0^0=0
0^1=1
1^0=1
1^1=0

例えば元の数値が10でキーが12とします。
これらを2進数に変換します。
各桁を比較し、同じならば0、違うならば1とします。
これを10進数に戻します。

10=>1010
12=>1100
06<=0110 同じ処理をもう一度やってみます。 06=>0110
12=>1100
10<=1010 元の数値に戻りました。 これを利用したのがencryptです。

src = 123456
dst = encrypt(src)
print(dst)

src_new = encrypt(dst)
print(src_new)

結果
685339
123456

123456が685339に暗号化され123456に復号されています。

コメント

タイトルとURLをコピーしました