1

私はここにあるatomicinfによる次のコードを持っています:atomicinfのコード!コードは次のとおりです。

import Crypto.Cipher.AES
import Crypto.Util.Counter

key = "0123456789ABCDEF" # replace this with a sensible value, preferably the output of a hash
iv = "0000000000009001" # replace this with a RANDOMLY GENERATED VALUE, and send this with the ciphertext!

plaintext = "Attack at dawn" # replace with your actual plaintext

ctr = Crypto.Util.Counter.new(128, initial_value=long(iv.encode("hex"), 16))

cipher = Crypto.Cipher.AES.new(key, Crypto.Cipher.AES.MODE_CTR, counter=ctr)
print cipher.encrypt(plaintext)

私の質問は次のとおりです。復号化はどのように機能しますか? (明らかに、カウンターを手動でインポートするか、現在のカウンターをどこかに保存する必要があります) そして、次に DES はどうですか? カウンターが小さいことは知っていますが、どのように定義すればよいですか?

4

1 に答える 1

1

CTR モードの復号化は、暗号化と同じように機能します。つまり、復号化するには、2 回目に「encrypt」を呼び出す必要があります。これは、CTR モードでは IV が次のブロックごとにインクリメントされ、AES アルゴリズムで暗号化され、結果がクリアテキストで xor されるためです。もう一度 Xor すると、クリアテキストが返されます。

于 2012-12-12T21:28:51.937 に答える