我正在使用C#编写3DES(使用SHA1哈希)加密算法。密钥大小错误

时间:2018-10-30 04:18:34

标签: sha1 3des

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

公共静态字符串Encrypt(字符串toEncrypt,布尔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);
    }

}

0 个答案:

没有答案