Я пытаюсь выполнить упражнение, которое включает в себя расшифровку данного зашифрованного ключа сеанса с помощью данного общего ключа. Я расшифровал сеансовый ключ и напечатал массив байтов на экране. (Тот же результат печатается, когда я запускаю программу).
Затем, чтобы проверить свою работу, я пытаюсь снова зашифровать расшифрованный сеансовый ключ (очевидно, с тем же общим ключом), но результат все время разный, когда предполагается вернуть мне исходный зашифрованный сеансовый ключ.
Я не могу понять, это моя ошибка....
Спасибо
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Crypto
{
public class Program
{
static void Main(string[] args)
{
//Shared Master Key
byte[] mkByteArray = { 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23 };
//Encrypted Session Key
byte[] eskByteArray = { 0x4a, 0x4d, 0xe6, 0x87, 0x82, 0x47, 0xd3, 0x7b };
PrintByteArray(eskByteArray);
DES des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;
des.Key = mkByteArray;
ICryptoTransform ct1 = des.CreateDecryptor();
byte[] resultArray1 = ct1.TransformFinalBlock(eskByteArray, 0, eskByteArray.Length);
des.Clear();
PrintByteArray(resultArray1);
ICryptoTransform ct2 = des.CreateEncryptor();
byte[] resultArray2 = ct2.TransformFinalBlock(resultArray1, 0, resultArray1.Length);
des.Clear();
PrintByteArray(resultArray2);
}
//-----Method to print the byte array on screen-----
public static void PrintByteArray(byte[] bytes)
{
var sb = new StringBuilder("new byte[] { ");
foreach (var b in bytes)
{
sb.Append(b + ", ");
}
sb.Append("}");
Console.WriteLine(sb.ToString());
}
}
}