0
私は現在、単純なシーザー暗号解読を実装するために、バイト単位でソリッドにオフセットしようとしています。しかし、私はこれを行う方法を理解することはできません。ここでリミックスで、いくつかのコンパイルエラーを与える私の現在のコードは、次のとおりです。どのようにしてバイトを整数でオフセットしますか?
TypeError: Expression has to be an lvalue.
decryptedData[i] = (decryptedData[i] - key) % 256;
^--------------^
TypeError: Operator - not compatible with types bytes1 and int256
decryptedData[i] = (decryptedData[i] - key) % 256;
^--------------------^
TypeError: Operator % not compatible with types bytes1 and int_const 256
decryptedData[i] = (decryptedData[i] - key) % 256;
^----------------------------^
ありがとう:
function decrypt(bytes32 data, int key) public returns (bool) {
bytes32 decryptedData = data; // `data` here is the encrypted data
// decryption
for (int i = 0; i < decryptedData.length; i++) {
decryptedData[i] = (decryptedData[i] - key) % 256;
}
// returns if sha256(decryptedData) matches some value
}
しかし、これは私に次のエラーを与えます!
「インデックスアクセス」セクションを参照してください。「キー」はどこに定義されていますか? –
右は、関数パラメータのintとしてキーが定義されています!私はそれについて残念な事を更新します。 – aevumcessi
したがって、質問に示唆されているようにインデックスの数だけバイトを移動していないので、示されたアルゴリズムはシーザー暗号のアルゴリズムではありません。 –