Я создал новое консольное приложение .NET micro Framework v4.1, используя копирование / вставку метода шифрования.
В том же решении я добавил новый тестовый проект .NET 4.0, который ссылался на образецКласс Key_TinyEncryptionAlgorithm из блога.Я использовал возвращаемое значение из метода Encrypt 2BwR4Xe2sIk=
, и оно использовалось в качестве тестовых данных для модульного теста, который успешно расшифровал строку обратно в 01234567
.
Я предполагаю, что ваш транспортный механизм вызывает проблему.Сообщение по проводам изменяется, и то, что приходит к вам на службу, не эквивалентно тому, что осталось от устройства.
Возможно, просто классическая проблема сериализации ...
Все x86 и машины имеют младший порядок.Эмулятор .NET Micro Framework сообщает через SystemInfo.IsBigEndian
, что эмулируемая среда также имеет порядок с прямым порядком байтов.
Однако обычно данные передаются по сети в порядке с прямым порядком байтов.Если вы хотите обратить байты на приемном конце, следующий метод должен перевернуть заказ для вас.Я помещаю это в класс Key_TinyEncryptionAlgorithm.
private static byte[] ReverseBytes(byte[] inArray)
{
byte temp;
int highCtr = inArray.Length - 1;
for (int ctr = 0; ctr < inArray.Length / 2; ctr++)
{
temp = inArray[ctr];
inArray[ctr] = inArray[highCtr];
inArray[highCtr] = temp;
highCtr -= 1;
}
return inArray;
}
И использование в методе расшифровки.
Console.WriteLine(BitConverter.ToString(m));
m = Key_TinyEncryptionAlgorithm.ReverseBytes(m);
Console.WriteLine(BitConverter.ToString(m));
Производит этот вывод
D8-1C-11-E1-77-B6-B0-89
89-B0-B6-77-E1-11-1C-D8