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
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
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
元の結果が得られるため、アルゴリズムは対称的であることに注意してください。元の文字列が提供されると、暗号化されます。暗号化された文字列が提供された場合、それは復号化されます。
ファイルの内容からリストを作成します
例えば。開梱後の「ハローワード」は[72、101、108、108、111、32、87、111、114、108、100]になります
次に、各インデックスをキーの値でXORSします(例:0b010101 ^ 0b110011 = '0b100110')
i&0xFF
キーのインデックスが0xff(255)を超えないようにするだけです...基本的にはi%256
高速のみと同じです
keys[i & 0xFF]
256バイトのキー文字列のi番目の値を返します。
次に、この値は、関連する暗号化文字とXORされます(^ = XOR)