c # — шифрование с использованием 3DES EDE / ECB / NOPadding

Я получил задачу зашифровать и расшифровать строку XML, используя TOKEN и KEY.
Шифрование должно использовать 3DES EDE / ECB / NOPadding и может быть сделано либо в PHP или же C#

Я не очень подготовлен к этому, поэтому я прочитал немного теории и пришел к очень простой реализации, которая заключается в следующем:

public string Encrypt( string message, string key, string token ) {
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes( message );
byte[] keyArray = CreateHash( key );
byte[] vectorArray = CreateHash( token );
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes. We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.None;

ICryptoTransform cTransform = tdes.CreateEncryptor(keyArray, vectorArray);
//transform the specified region of bytes array to resultArray
byte[] resultArray = cTransform.TransformFinalBlock( toEncryptArray, 0, toEncryptArray.Length );
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String( resultArray, 0, resultArray.Length );
}

private byte[] CreateHash( string toHash ) {
//use get hashcode regards to your key
MD5CryptoServiceProvider hashKey = new MD5CryptoServiceProvider();
byte[] kArray = hashKey.ComputeHash( UTF8Encoding.UTF8.GetBytes( toHash ) );
//Always release the resources and flush data
//of the Cryptographic service provide. Best Practice
hashKey.Clear();
return kArray;
}

Однако я думаю, что это не совсем правильно. На самом деле, я не уверен, что этот знак будет использоваться таким образом.
Может кто-нибудь предоставить больше информации и указать мне правильное направление, как решить эту проблему?

Спасибо

0

Решение

Вы можете использовать токен как вектор на TripleDESCryptoServiceProvider вместе с ключом.

ICryptoTransform cTransform = tdes.CreateEncryptor(key, token);
2

Другие решения

Других решений пока нет …