开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:421

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 1424|回复: 9

[基本操作] DES加密没问题,解密一直报错CryptographicException: Invalid input block size.

[复制链接]  [移动端链接]
4四处流浪
400/500
排名
4602
昨日变化
2

3

主题

50

帖子

400

积分

Rank: 4

UID
159853
好友
0
蛮牛币
320
威望
0
注册时间
2016-8-1
在线时间
135 小时
最后登录
2017-5-28
发表于 2016-9-22 17:46:10 | 显示全部楼层 |阅读模式
10蛮牛币
DES 加密没问题,解密一直报错 CryptographicException: Invalid input block size.

对 字节数组 加解密,该直接数组长度为 98431770


网上找到的相关问题都是因为 加解密密码不匹配 或者加解密字节数组长度过长


但我的密码都是用的同一个值并且固定不变,密码应该不会不匹配
而字节数组长度过长的话加密应该也会失败才对


求大神帮忙指点

下面是加解密代码:
        #region 加密解密(对称算法)
        private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
        private static readonly string key = "12345678";
        /// <summary>
        /// DES加密字节数组
        /// </summary>
        /// <param name="encryptString">待加密的字节数组</param>
        /// <param name="encryptKey">加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字节数组,失败返回源串</returns>
        public static byte[] EncryptDES(byte[] byteText)
        {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                        string pToEncrypt = Convert.ToBase64String(byteText);
                        byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
                        des.Key = ASCIIEncoding.ASCII.GetBytes(key);
                        //des.IV = ASCIIEncoding.ASCII.GetBytes(key);
                        des.IV = Keys;

                        System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                                cs.Write(inputByteArray, 0, inputByteArray.Length);
                                cs.FlushFinalBlock();
                                cs.Close();
                        }
                        string str = Convert.ToBase64String(ms.ToArray());
                        ms.Close();
                        return Encoding.UTF8.GetBytes(str);
                }
        }
       
        /// <summary>
        /// DES解密字节数组
        /// </summary>
        /// <param name="decryptString">待解密的直接数组</param>
        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
        /// <returns>解密成功返回解密后的字节数组,失败返源串</returns>
        public static byte[] DecryptDES(byte[] byteText)
        {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                        string pToDecrypt = Convert.ToBase64String(byteText);
                        byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
                        des.Key = ASCIIEncoding.ASCII.GetBytes(key);
                        //des.IV = ASCIIEncoding.ASCII.GetBytes(key);
                        des.IV = Keys;

                        System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                        {
                                cs.Write(inputByteArray, 0, inputByteArray.Length);
                                cs.FlushFinalBlock();
                                cs.Close();
                        }
                        string str = Encoding.UTF8.GetString(ms.ToArray());
                        ms.Close();
                        return Encoding.UTF8.GetBytes(str);
                }
        }
        #endregion




回复

使用道具 举报

6蛮牛粉丝
1130/1500
排名
2423
昨日变化
2

5

主题

400

帖子

1130

积分

Rank: 6Rank: 6Rank: 6

UID
68430
好友
0
蛮牛币
5110
威望
0
注册时间
2015-1-14
在线时间
295 小时
最后登录
2017-5-28
发表于 2016-9-22 17:46:11 | 显示全部楼层
粗略的看了一下,,因为我还在加班的,没办法帮你细看,  你的des  .key    用的额 ascll ,你的文本是用的  utf8  ,  两个不一致呀~~你试试是这个原因吗 ?编码不同,字节当然也不一致呀~~你先试试,等我加完班了,摘取下你这段代码,我建个工程试验一下~

回复

使用道具 举报

9以坛为家
17057/50000
排名
1839
昨日变化
7

10

主题

1万

帖子

1万

积分

Rank: 9Rank: 9Rank: 9

UID
78862
好友
5
蛮牛币
2909
威望
0
注册时间
2015-3-11
在线时间
934 小时
最后登录
2017-5-30
QQ
发表于 2016-9-23 09:39:40 来自Mobile--- | 显示全部楼层
报错报在哪个位置啊,

回复

使用道具 举报

6蛮牛粉丝
1034/1500
排名
1381
昨日变化
1

2

主题

73

帖子

1034

积分

Rank: 6Rank: 6Rank: 6

UID
58961
好友
0
蛮牛币
1562
威望
0
注册时间
2014-12-2
在线时间
299 小时
最后登录
2017-4-6
发表于 2016-9-23 10:01:42 | 显示全部楼层
Invalid input block size. 这不就是异常的问题吗?你设置下大小

回复

使用道具 举报

4四处流浪
400/500
排名
4602
昨日变化
2

3

主题

50

帖子

400

积分

Rank: 4

UID
159853
好友
0
蛮牛币
320
威望
0
注册时间
2016-8-1
在线时间
135 小时
最后登录
2017-5-28
 楼主| 发表于 2016-9-23 10:13:21 | 显示全部楼层
lilexy 发表于 2016-9-23 09:39
报错报在哪个位置啊,

解密的 cs.FlushFinalBlock();

回复

使用道具 举报

4四处流浪
400/500
排名
4602
昨日变化
2

3

主题

50

帖子

400

积分

Rank: 4

UID
159853
好友
0
蛮牛币
320
威望
0
注册时间
2016-8-1
在线时间
135 小时
最后登录
2017-5-28
 楼主| 发表于 2016-9-23 10:14:56 | 显示全部楼层
customs 发表于 2016-9-23 10:01
Invalid input block size. 这不就是异常的问题吗?你设置下大小

可是加密跟解密的代码差不多,加密能成功,大小应该没什么问题吧?
[发帖际遇]: Zzhao92 在论坛发帖时没有注意,被小偷偷去了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

4四处流浪
400/500
排名
4602
昨日变化
2

3

主题

50

帖子

400

积分

Rank: 4

UID
159853
好友
0
蛮牛币
320
威望
0
注册时间
2016-8-1
在线时间
135 小时
最后登录
2017-5-28
 楼主| 发表于 2016-9-23 17:34:31 | 显示全部楼层
解决了已经,跟加解密的代码无关,是我读取的数据是WWW缓存的数据,不是我要的那个,所以才会解密不成功,多谢各位大神的帮忙

回复

使用道具 举报

4四处流浪
400/500
排名
4602
昨日变化
2

3

主题

50

帖子

400

积分

Rank: 4

UID
159853
好友
0
蛮牛币
320
威望
0
注册时间
2016-8-1
在线时间
135 小时
最后登录
2017-5-28
 楼主| 发表于 2016-9-24 10:02:51 | 显示全部楼层
绝世love情缘 发表于 2016-9-23 20:03
粗略的看了一下,,因为我还在加班的,没办法帮你细看,  你的des  .key    用的额 ascll ,你的文本是用的 ...

已经搞定了,换了个加解密的方法,不过主要还是因为我读取到的www数据是之前缓存的,不是我要的那个,多谢大神了

回复

使用道具 举报

6蛮牛粉丝
1130/1500
排名
2423
昨日变化
2

5

主题

400

帖子

1130

积分

Rank: 6Rank: 6Rank: 6

UID
68430
好友
0
蛮牛币
5110
威望
0
注册时间
2015-1-14
在线时间
295 小时
最后登录
2017-5-28
发表于 2016-9-24 19:35:40 | 显示全部楼层
NICE ~~ 最近是实在太忙,都是2点才回家,已经2周了~~太累了~不然帮你看的

回复

使用道具 举报

2初来乍到
128/150
排名
14367
昨日变化
4

4

主题

33

帖子

128

积分

Rank: 2Rank: 2

UID
164237
好友
0
蛮牛币
167
威望
0
注册时间
2016-8-25
在线时间
61 小时
最后登录
2017-3-1
发表于 2016-9-27 10:34:18 | 显示全部楼层
本帖最后由 lieb 于 2016-9-27 10:35 编辑

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表