Pythonで暗号化と復号を簡単に行う方法
Pythonで数列を暗号化する方法を考えます。復号する必要もあります。
排他的論理和を使うと暗号化も復号も簡単です。
def encrypt(src, key=759643):
dst = src ^ key
return dst
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)
dst = encrypt(src)
print(dst)
src_new = encrypt(dst)
print(src_new)
結果
685339
123456
123456が685339に暗号化され123456に復号されています。
[ 2023年11月16日 | カテゴリー: Python | タグ: アルゴリズム , 暗号 ]
« 登記簿をコンビニで入手するには | Excelで暗号化と復号を簡単に行う方法 »
コメントを残す