微信企业号解密失败-密文包含空格

最近在做微信企业号的开发,昨天下午(2015-05-19)突然遇到一个很奇怪的情况,就是使用官方提供的demo(C#)进行微信消息的加密与解密时失败,因为微信给我的回调模式传递过来的加密串里竟然有空格,多次寻求解决方案无果,垃圾客服只会说“请去看开发文档”,后台转念一想,微信的加密方式使用的是Base64,那么问题会不会就出现在这里呢?于是去网上搜索关于BASE64加密得到空格的情况,发现是正常的,原因是:“加号(+)是BASE64编码的一部分,而加号在QueryString中被当成是空格。 因此,当一个含有BASE64编码的字符串直接作为URL的一部分时,如果其中含有加号,则使用QueryString读取时,再使用BASE64解码就会发生错误。”。解决方案就是把加密串中的空格替换成+号,详细原因请看:http://blog.csdn.net/wang0928007/article/details/7429568,同时向这位作者致谢

原文地址:https://www.cnblogs.com/wl952123/p/4516434.html