1、首先排除数据库中读取加密后的字段是否被强制截断。

2、AES加密后的byte[]首先应用base64( Convert.ToBase64String)编码一次,若直接用utf8的话会报上述错误,若用unicode编码的话会解密成乱码,原因是加密后的byte数组用其他编码方式编码的话会丢失字符。

3、base编码后的字符串恢复为数组可用Convert.FromBase64String。

加密:

public static byte[] AESEncrypt(string plainText)
{
SymmetricAlgorithm des = Rijndael.Create();
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);
des.Key = Encoding.UTF8.GetBytes(keys);
des.IV = _key1;

ICryptoTransform cTransform = des.CreateEncryptor();
return cTransform.TransformFinalBlock(inputByteArray, , inputByteArray.Length);
}

解密:

public static byte[] AESDecrypt(byte[] cipherText)
{
SymmetricAlgorithm des = Rijndael.Create();
des.Key = Encoding.UTF8.GetBytes(keys);
des.IV = _key1; ICryptoTransform cTransform = des.CreateDecryptor();
return cTransform.TransformFinalBlock(cipherText, , cipherText.Length);
}
public static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
public static string keys = "dongbinhuiasxiny";//密钥,128位

解决解密时出现"要解密的数据的长度无效" 或 "填充无效无法被移除" 的错误的更多相关文章

  1. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  2. Tomcat:3DES解密时中文乱码

    情况说明:直接用main方法运行时是没有问题的,web程序一放入tomcat中就会出现解密时乱码. 解决办法: 在解密时,返回string时对数组需要指定UTF-8编码. public static ...

  3. 【转】 Java 进行 RSA 加解密时不得不考虑到的那些事儿

    [转] Java 进行 RSA 加解密时不得不考虑到的那些事儿 1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适 公钥加密,私钥解密.加密的系统和解密的系统分开部署,加密的系统不应该同时 ...

  4. C# .net 填充无效,无法被移除 微信小程序解密失败的解决办法

    微信小程序获取用户信息诸如unionId的时候需要解密,如果遇到偶然的解密失败(填充无效,无法被移除),原因很有可能是session_key错误, 也是就你用作解密的session_key并不是微信用 ...

  5. 解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

  6. bug解决思路——插入数据时,前台不展示数据

    积攒一下平时解决bug时的思路,以后若是一头乱麻时翻出来看看~ 一个bug五一之前就和现场在定位,直到今天才算是定位到问题. 所有bug,还是得重现出来才可以发现问题.现场说登记记录时数据没在前台展示 ...

  7. 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#

    前段时间做的银联支付,折腾了好久,拼凑的一些代码,有需要的朋友可以参考,本人.Net新手,不保证准确性! 这个银联手机支付没有SDK提供,技术支持也没有.Net的,真心不好搞! RSA加解密,这里有个 ...

  8. ssh下:系统初始化实现ServletContextListener接口时,获取spring中数据层对象无效的问题

    想要实现的功能:SSH环境下,数据层都交由Spring管理:在服务启动时,将数据库中的一些数据加载到ServletContext中缓存起来. 系统初始化类需要实现两个接口: ServletContex ...

  9. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

随机推荐

  1. css 设置背景色

    设置背景图 background:url($!{rc.contextPath}/assets/images/bady/date.png)repeat 50px center background:ur ...

  2. CAS-登出配置

    该图 当一个web 浏览器登录到应用服务器时,应用服务器(application)会监测用户的session,如果没有session,则应用服务器会把url跳转到CAS server上.要求 用户登录 ...

  3. Android JNI作用及其详解

    Android JNI作用及其详解 Java Native Interface (JNI)标准是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 J ...

  4. bzoj1648

    题解: 简单灌水 然后统计一下 代码: #include<bits/stdc++.h> using namespace std; ; int ne[N],num,fi[N],n,k,m,x ...

  5. property 的详细使用方法

    property(fget=None, fset=None, fdel=None, doc=None)  俗话说条条大路通罗马,同样是完成一件事,Python 其实提供了好几个方式供你选择. prop ...

  6. linux free 理解

    free命令:显示Linux系统中物理内存.buffer/cache.swap的使用情况. virtual-machine:~$ free total used free shared buffers ...

  7. DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(二)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET Bootstrap v18.1 的新功能,快 ...

  8. mysql 的 java 连接库

    mysql 的 java 连接库 解压缩mysql-connector-java-5.1.30.zip 将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysq ...

  9. 阿里、华为、腾讯Java技术面试题精选

    阿里.华为.腾讯Java技术面试题精选 2017-10-27 19:30技术/腾讯/华为 JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读 ...

  10. 安装SharePoint Server的主机重命名

    今天我头脑一热, 把安装在WS 2008 R2上的有Stand-alone SharePoint Server 2010的机器重命名了一下, 结果SharePoint Central Admin都进不 ...