длина блока на входе 64 bit.
byte[] testArray = { 0,0,0,0,0,0,0,0};
алгоритм для кодирования DES ECB
public static byte[] Encrypt(byte[] bytesForEncyption)
{
DES desAlg = DES.Create();
desAlg.Mode = CipherMode.ECB;
desAlg.Padding = PaddingMode.PKCS7;
desAlg.Key = Encoding.ASCII.GetBytes("11223344");
desAlg.BlockSize = 64;
using(MemoryStream ms = new MemoryStream())
{
using(CryptoStream cs = new CryptoStream(ms, desAlg.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(bytesForEncyption, 0, bytesForEncyption.Length);
cs.FlushFinalBlock();
return ms.ToArray();
}
}
}
На выходе получаю 128 bit зашифрованных данных. Хотя должно быть 64 bit
в чём ошибка?
Всё верно, вы установили desAlg.Padding = PaddingMode.PKCS7
, а он должен дополнить сообщение до полного блока. Так как предыдущий блок уже полностью занят, то идет дополнение новым блоком. Вы можете выставить desAlg.Padding = PaddingMode.None
, тогда получите 8 байт на выходе.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Есть класс, который унаследован от интерфейса IJobЭкемпляр этого класса у меня создается через реализацию интерфейс
Есть адрес картинки, например http://sitecom/images/image