Я пишу алгоритм шифрования 3DES (с использованием SHA1 HASH) с использованием C #. Ошибка размера ключа - PullRequest
0 голосов
/ 30 октября 2018

Я пишу алгоритм шифрования 3DES (используя SHA1 HASH) с использованием C #. Ошибка размера в tdes.Key = keyArray следующего кода. Я не знаю, что пошло не так.

открытая статическая строка Encrypt (строка toEncrypt, bool useHashing)

{

 byte[] keyArray;
 byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

 System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();


 // Get the key from config file

 string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));

 //System.Windows.Forms.MessageBox.Show(key);
 if (useHashing)
  {

   SHA1CryptoServiceProvider objSHA1CryptoService = new SHA1CryptoServiceProvider();
   keyArray = objSHA1CryptoService.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
   objSHA1CryptoService.Clear();

  }
  else
        keyArray = UTF8Encoding.UTF8.GetBytes(key);

        TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
        tdes.Key = keyArray;
        tdes.Mode = CipherMode.ECB;
        tdes.Padding = PaddingMode.PKCS7;

        ICryptoTransform cTransform = tdes.CreateEncryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
        tdes.Clear();
        return Convert.ToBase64String(resultArray, 0, resultArray.Length);
    }

}

...