1

簡単な質問:(Pythonで)強力な可逆暗号化方式が証明されていますか?

要件:Pythonライブラリの3番目の部分は必要ありません。
環境の適用:ネットワークを介してデータを転送します。

str.translate()キーで生成されたテーブルを使用するメソッドを見ました。テーブル生成関数は次のとおりです。

def get_table(key):
    m = hashlib.md5()
    m.update(key)
    s = m.digest()
    (a, b) = struct.unpack('<QQ', s)
    table = [c for c in string.maketrans('', '')]
    for i in xrange(1, 1024):
        table.sort(lambda x, y: int(a % (ord(x) + i) - a % (ord(y) + i)))
    return ''.join(table)

この関数に関する質問:

  1. これは優れた/強力な可逆暗号化ですか?
  2. 関数1024は大きな数ですが、十分な強度のテーブルを取得するには、何度もループする必要がありますか?

前もって感謝します。

4

3 に答える 3

3

サードパーティのライブラリなしで強力な暗号化が必要な場合は、運が悪いです。Python標準ライブラリにはハッシュ関数しかありません。安全な暗号化が必要な場合は、AESのようなものを自分で実装するか(暗号化アルゴリズムを実装するときに経験の浅い人が混乱するのは非常に簡単なので、これはお勧めできません)、要件を変更してPyCryptoを使用する必要があります。

于 2012-12-09T06:58:53.667 に答える
2

xor暗号はうまく機能します(メッセージの各文字をキー内の対応する文字とビット単位でXORすると、暗号文をキーと再度XORすることでメッセージに戻ることができます)。

XOR暗号

編集:キーをどのように取得するかによって、この暗号のセキュリティが決まりますが、これは高速で簡単に元に戻せる暗号です。

EDIT2:具体的には、これを安全な暗号システムにする方法については、Wikiのこれらの行を参照してください...

「キーがランダムで、少なくともメッセージと同じ長さである場合、XOR暗号は、メッセージ内にキーが繰り返される場合よりもはるかに安全です。[3]キーストリームが疑似乱数ジェネレーターによって生成される場合、結果はストリーム暗号です。真にランダムなキーを使用すると、結果は1回限りのパッドになり、理論上でも解読できません。」

于 2012-12-09T06:49:42.440 に答える
0

オフセット係数を使用して、独自の暗号化プログラムを作成できます。すなわち; ord()を使用して、各文字を数値に変換します。ランダムに生成されたオフセットキーを使用して番号に追加します。chr()を使用して文字に変換し直します

復号化するには:ord()を使用して各文字を数値に変換し、オフセットキーで減算します。元のメッセージがあることがわかっているchr()を使用して文字に変換し直します。

それがあなたに役立つことを願っています

于 2016-12-13T10:56:59.673 に答える