1

I get no error when I encrypt a string but, I get an error when I try to decrypt the string, it says that the Input.Length is invalid. Any ideas?

public class Crypt
    {
        public string Encrypt(string Key, string Input)
        {
            ICryptoTransform crypted = tran(Key).CreateEncryptor();
            UTF8Encoding utf8 = new UTF8Encoding();
            return utf8.GetString(crypted.TransformFinalBlock(utf8.GetBytes(Input), 0, Input.Length));
        }
        public string Decrypt(string Key, string Input)
        {
            ICryptoTransform crypted = tran(Key).CreateDecryptor();
            UTF8Encoding utf8 = new UTF8Encoding();
            return utf8.GetString(crypted.TransformFinalBlock(utf8.GetBytes(Input), 0, Input.Length));
        }
        private TripleDESCryptoServiceProvider tran(string Key)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            UTF8Encoding utf8 = new UTF8Encoding();
            TripleDESCryptoServiceProvider tDES = new TripleDESCryptoServiceProvider();
            tDES.Key = md5.ComputeHash(utf8.GetBytes(Key));
            tDES.Mode = CipherMode.ECB;
            tDES.Padding = PaddingMode.PKCS7;
            return tDES;
        }
    }
4

1 に答える 1

3

暗号化プロセスによって返されるバイトは UTF8 ではありませんが、そのように扱っています。暗号化されたデータのテキスト表現が必要な場合は、単に任意のバイトを UTF8 に変換する以上のことを行う必要があります。

ここでのスキートの答えは、あなたをあなたの道に導くはずです。

于 2012-08-01T16:06:42.603 に答える