У меня есть метод на C ++, созданный для шифрования AES 256, который работает:
void AES_Encrypt(unsigned char* message, unsigned char* expandedKey)
{
unsigned char numOfRounds = 13;
unsigned char* state = new unsigned char[16];
AddRoundKey(state, expandedKey);
for (int i = 0; i < numOfRounds; i++)
{
//bla bla
AddRoundKey(state, expandedKey + (16 * (i + 1)));
}
// bla bla
AddRoundKey(state, expandedKey + 224);
}
и
void AddRoundKey(unsigned char *state, unsigned char* roundKey)
{
for (int i = 0; i < 16; i++)
state[i] = state[i] ^ roundKey[i];
}
, но когда я перевожу его на C #:
private void AddRoundKey(byte[] state, byte[] roundKey)
{
for (int i = 0; i < 16; i++)
state[i] = (byte)(state[i] ^ roundKey[i]);
}
Я получаю ошибки в точной переведенной функции:
AddRoundKey(state, expandedKey + (16 * (i + 1)));
AddRoundKey(state, expandedKey + 224);
Как мне правильно перевести void AddRoundKey(unsigned char *state, unsigned char* roundKey)
в этом случае?