プログラミング

【プログラミング】初歩的な「暗号化」をやってみた【Python】

投稿日:

先日、プログラミングについての記事を書きました。暗号化に関する記事です。

少し進展がありましたので、記事に書きます。


EXOR暗号化

参考にしたサイトは以下

pythonでXORプチ暗号化

排他的論理和 Exclusive Or の演算による暗号化です。

イメージは下記の通り。暗号化、複合化の計算式が、排他的論理和という簡易的なものとなります。

用途

自分の場合は、Pythonのコード内に記載したツイッターのアクセスキーなどを秘匿したい、という用途です。

PythonのコードはローカルのPC、スマホに置いて運用しています。このコードが万が一流出したら、自分のツイッターアカウントへ無制限にアクセスできてしまいます。リスクをある程度低下させるため、暗号化したかったのです。

コード

def crypto_text_to_hex(src_text, key):
    if src_text and key:
        xor_code = key
        # keyが短い場合は、繰り返して必要バイト数を準備する
        while len(src_text) > len(xor_code):
            xor_code += key
        tempcalc=0
        tempout=”
        for (data, code) in zip(src_text, xor_code):
            tempcalc=ord(data)^ord(code)
            tempout=tempout+chr(tempcalc)
        return tempout.encode().hex()

def decrypto_hex_to_text(hex_text, key):
    if hex_text and key:
        try:
            crypt_data = bytes.fromhex(hex_text).decode()
        except ValueError:
            crypt_data = None

        if crypt_data:
            xor_code = key
            # keyが短い場合は、繰り返して必要バイト数を準備する
            while len(crypt_data) > len(xor_code):
                xor_code += key
            tempcalc=0
            tempout=”
            for (data, code) in zip(crypt_data, xor_code):
                tempcalc=ord(data)^ord(code)
                tempout=tempout+chr(tempcalc)
            return tempout

https://qiita.com/magiclib/items/fe2c4b2c4a07e039b905  記事内のコードを一部改変して記述しております。

今後の予定

  • Twitter関連の個人プログラムを、サーバーに置いて定期運用させる
  • Twitterプログラムに機能を付けて、限られた知り合いに配布する

やや高めのハードルを置いていますが、それぞれに対して多くの下準備が必要になると思っています。

今回は「暗号化」だけに言及した記事となりました。次はTwitterの操作も含めた記事を書くことになりそうです。

-プログラミング

執筆者:

ブログ内検索

プロフィール

twitter
Neeetb twitterプロフィール

11年間自動車業界でエンジニアとして働いていた。
現在は技術者としての経験を活かし、DiscordサーバーにおけるBOT運用方法を発信している。
PCパーツに関しても得意としており、ゲーミングデバイスのレビューやゲーム配信に関する記事も投稿している。