c# で Speck 32/64 ブロック暗号を実装しようとしていますが、暗号化復号化アルゴリズムで立ち往生しています。アルゴリズムに従って、プレーンテキストを2つの単語に分割する必要があることを知っています
x,y = plaintext words
--------------------------- key expansion --------------------------
for i = 0..T-2
[i+m-1] ← (k[i] + S−α
[i]) ⊕ i
k[i+1] ← S
β k[i] ⊕ `[i+m-1]
end for
---------------------------- encryption ----------------------------
for i = 0..T-1
x ← (S−α x + y) ⊕ k[i]
y ← S
βy ⊕ x
end for
参考文献
軽量ブロック暗号の SIMON および SPECK ファミリ https://eprint.iacr.org/2013/404
私の質問は、平文は文字列でなければならないということです。次に、バイナリに変換するか、それを上記のアルゴリズムで使用しますか? アルゴリズムは平文のタイプを示さず、暗号化の例があります
Key: 1918 1110 0908 0100
Plaintext: 6574 694c
Ciphertext: a868 42f2