使用TripleDESCryptoServiceProvider加密...错误!!! [英] Use TripleDESCryptoServiceProvider to Encrypt...Error!!!

查看:87
本文介绍了使用TripleDESCryptoServiceProvider加密...错误!!!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用TripleDESCryptoServiceProvider加密一个字节数组,输入的大小为64字节,但返回72字节给我!为什么?我的代码如下:

I want to user TripleDESCryptoServiceProvider to encrypt a byte array,the size of input is 64 bytes,but it return 72 bytes to me!!! Why? My code as following:

public byte[] EncryptBytes(byte[] plainBytes, byte[] key, byte[] iv)
        {
            try
            {
                TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider();
               // tds.Padding = PaddingMode.None;
                ICryptoTransform ct = tds.CreateEncryptor(key, iv);
                MemoryStream ms = new MemoryStream();
                CryptoStream cStream = new CryptoStream(ms,
                   ct,
                    CryptoStreamMode.Write);
                cStream.Write(plainBytes, 0, plainBytes.Length);
                cStream.FlushFinalBlock();
                byte[] ret = ms.ToArray();
                cStream.Close();
                ms.Close();
                return ret;
            }
            catch
            {
                return plainBytes;
            }
        }

 public byte[] DecryptBytes(byte[] encryptBytes, byte[] key, byte[] iv)
        {
            try
            {
                TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider();
               // tds.Padding = PaddingMode.None;
                ICryptoTransform ct = tds.CreateEncryptor(key, iv);
                MemoryStream msDecrypt = new MemoryStream(encryptBytes);
                CryptoStream cStream = new CryptoStream(msDecrypt,
                    ct,
                    CryptoStreamMode.Read);

                byte[] fromEncrypt = new byte[encryptBytes.Length];
                cStream.Read(fromEncrypt, 0, fromEncrypt.Length);
                //cStream.FlushFinalBlock();
                //msDecrypt.Close();
                //cStream.Close();
                return fromEncrypt;
            }
            catch
            {
                return encryptBytes;
            }
        }

推荐答案

您期望多少字节? 64 ?!我从来没有想过会返回与输入相同数量的字节的任何好的加密方法.您为什么要在地球上期望它?尝试加密,然后解密,并确保返回与输入相同的数据.

—SA
What number of bytes did you expect? 64?! I never head of any good encryption method which would return the same number of bytes as on input. Why on Earth would you expect it? Try to encrypt, then decrypt and make sure you return the same data as on input.

—SA


这篇关于使用TripleDESCryptoServiceProvider加密...错误!!!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆