-2

mipTextは任意のバイナリ文字列です

次のようなキー:(48、34、65、168、91、nn)

そして、以下のコードを教えてください

def test(mipText,keys):
    mipText = list(mipText)
    for i, encryptedChar in enumerate(mipText):
        mipText[i] = encryptedChar ^ keys[i & 0xFF]
    return mipText
4

3 に答える 3

1

256バイトの長さの提供されたキーを使用してmipText単純なXOR暗号で暗号化(または復号化、問題ありません)します。keys

keys[i & 0xFF]適切なキーバイトです( th番目keysの位置にありi mod 256ます)。

encryptedChar ^ keys[i & 0xFF]i元の文字列のthバイトをmipText適切なキーバイトとXORします。

mipText[i] = encryptedChar ^ keys[i & 0xFF]i元の文字列のthバイトをmipText暗号化されたバージョンのバイトに置き換えます。

2つのアプリケーションでXOR元の結果が得られるため、アルゴリズムは対称的であることに注意してください。元の文字列が提供されると、暗号化されます。暗号化された文字列が提供された場合、それは復号化されます。

于 2012-08-15T05:14:09.173 に答える
1

ファイルの内容からリストを作成します

例えば。開梱後の「ハローワード」は[72、101、108、108、111、32、87、111、114、108、100]になります

次に、各インデックスをキーの値でXORSします(例:0b010101 ^ 0b110011 = '0b100110')

i&0xFFキーのインデックスが0xff(255)を超えないようにするだけです...基本的にはi%256高速のみと同じです

于 2012-08-15T05:16:07.220 に答える
0
 keys[i & 0xFF]

256バイトのキー文字列のi番目の値を返します。

次に、この値は、関連する暗号化文字とXORされます(^ = XOR)

于 2012-08-15T05:16:17.463 に答える