对中文进行MD5加密的注意事项(Java版,编码问题)
http://blog.csdn.net/tongdao/article/details/20690187
在工作中需要和第三方进行Http通信,在通信内容中有几个参数涉及到了中文。自己在进行MD5加密验证过程中,遇到了一些很奇怪(本人认为MD5是一个通用简单的加密算法,应该很稳定很完美了吧!)的问题:
问题1:接收到的问题乱码了
解决:这个问题很常见,网上有很多说明。由于http协议在传输过程中使用的都是iso_8859_1编码,所以在接收到参数之后,用value = new String(value.getBytes("ISO-8859-1"),"UTF-8"); 方法转成utf-8就可以了。
问题2:按照问题1的解决办法,生成MD5加密之前的字符串(日志中显示中文没有乱码),但是MD5加密之后字符串和本地的生成的不一样。
解决:这个问题就比较奇怪了。我又详细的查看了查看了第三方的开发问题,发现其中有"台通知参数都用URLEncoder.encode("xxx","UTF-8")做了编码处理"这句话,是不是这个原因引起的呢?自己做了尝试将参数又通过value=URLDecoder.decode(value, "UTF-8")进行了解码。测试出来,加密的字符串一致了。
问题3:这个问题就更奇怪了,在测试环境MD5之后是一样的,在正式环境就不一样了,并且正式环境的tomcat重新启动之后就正常了,但是一段时间之后又出现问题了。
解决:这个问题是由于MD5中用的String.getBytes()没有显示的指定编码格式导致的。如果方法String.getBytes()不显示指定编码格式,本方法将返回该操作系统默认的编码格式的字节数组。(这个问题还有个疑问就是为什么重启tomcat之后又正常了)
总结:这个Http通信时,对方进行了怎么样的正向操作,你就要逆向把它解析出来。在日志看到的中文可能是并不准确的。中文乱码的时候,需要查看你处理过程中,可能涉及到的各种默认编码。
对中文进行MD5加密的注意事项(Java版,编码问题)的更多相关文章
- java 短连接+MD5加密短链接
java 短连接+MD5加密短链接 import java.security.MessageDigest; public class ShotUrlUtil { public static void ...
- 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.create ...
- Java: md5 加密中文 & 注意编码
今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解. 后面网上搜索了一下,才知道是[编码]的问题. 以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下, ...
- 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)
开发中常常遇到MD5加密,最近做小程序也用到了,简单总结了一下: 这要有两个加密文件,一个不支持中文,一个支持,所以你选择支持的来用就行了: 也随便说说小程序的get和post网络请求. 来看看效果图 ...
- js进行MD5加密(含中文),与后台JAVA加密之后结果不同(解决)
开发小程序过程中与后台进行接口沟通,前期接口经过MD5加密和AES加密之后,后台进行解密. 今天出现一种情况,我前台加密之后的md5串与后台加密不同,后台发现可能是带用中文的原因, 这是加密之前的串: ...
- 数据对象转json与md5加密注意事项
项目中遇到将OC数据对象类型转化字符类型,然后进行MD5加密的技术流程,在转化字符数组到字符加密过程中遇到一些问题. 问题 转化后的字符进行md5加密,出现与服务器加密结果不匹配的情况 分析 在对代码 ...
- android md5加密与rsa加解密实现代码
import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security. ...
- [开源]用MQL4实现MD5加密
本文转载自博客园:混沌的世界 原文地址:http://www.cnblogs.com/niniwzw/archive/2009/12/05/1617685.html 在用MQL4进行金融交易的时候,经 ...
- MD5加密、时间戳转换、base64算法加密、解密
#region MD5加密 /// <summary> /// MD5加密 /// </summary> /// <param name="str"& ...
随机推荐
- vs2015 产品密钥
一.破解秘钥 企业版 HM6NR-QXX7C-DFW2Y-8B82K-WTYJV 专业版 HMGNV-WCYXV-X7G9W-YCX63-B98R2 二.破解步骤 1.安装vs2015 2 ...
- js的event.preventDefault()与event.stopPropagation()
event.preventDefault()用法介绍 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "submit" ...
- 重写equals() 和 hashCode()方法
什么情况下需要重写呢? 比如去重操作时, 有时候往Set集合存放对象User,我们User类的字段太多时,比如有50个字段, 判断两个User对象相同,不需要判断它们所有字段都相同,只需要判断它们的某 ...
- ssh免密登陆
1:建立新用户hadoop 2:进入/home/hadoop/.ssh/目录 3:所有要免密连接的终端运行: ssh-keygen -t rsa 三次回车后会产生:id_rsa,id_rsa.pub两 ...
- 使用keytool生成公钥、私钥、证书并且读取出来,使用私钥签名jar并验证(转)
参考链接:http://happyqing.iteye.com/blog/2139504 :https://blog.csdn.net/arjelarxfc/article/details/52461 ...
- L256 翻译
Should work be placed among the causes of happiness or be regarded as a burden? Much work isexceedin ...
- TensorFlow函数:tf.lin_space
函数:tf.lin_space 别名: tf.lin_space tf.linspace lin_space( start, stop, num, name=None ) 参见指南:生成常量,序列和随 ...
- vue 首屏渲染优化 -- 这个不错
这篇文章分享了从遇到前端业务性能问题,到分析.解决并且梳理出通用的Vue 2.x 组件级懒加载解决方案(Vue Lazy Component )的过程. 初始加载资源过多 问题起源于我们的一个页面,下 ...
- 2019-03-01-day002-基础编码
01 昨日内容回顾 编译型: 一次性编译成二进制. 优点:质型速度快. 确定:开发效率低,不能跨平台. 解释型: 逐行解释,逐行运行. 优点:开发效率高,可以跨平台. 缺点:回字形效率低. pytho ...
- 引入网站标题小logo
<link rel="icon" type="image/png" href="路径/favicon.png"> 关注微信小程序