首页 > 解决方案 > 我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。密钥大小错误

问题描述

我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。以下代码的 tdes.Key = keyArray 中的大小错误。我不知道出了什么问题。

公共静态字符串加密(字符串 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);
    }

}

标签: sha13des

解决方案


推荐阅读