对中文进行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"& ...
随机推荐
- ROM、PROM、EPROM、EEPROM、FLASH ROM、FLASH、eMMC
ROM(Read Only Memory,只读存储器)芯片:在微机的发展初期,BIOS都存放在ROM芯片中.ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不 ...
- vue-1-模板语法
文本 <span>Message: {{ msg }}</span><span v-once>这个将不会改变: {{ msg }}</span> 原始 ...
- css选择器思维导图
- Linux学习 :移植linux-3.4.83到JZ2440开发板
一.编译环境搭建: 1.linux源码下载:https://www.kernel.org/ (最新) https://mirrors.edge.kernel.org/pub/linux/kernel ...
- ORA-02049: 超时: 分布式事务处理等待锁
java.sql.SQLSyntaxErrorException: ORA-02049: 超时: 分布式事务处理等待锁 ORA-06512: 在 "HECDEV.BGT_JOURNAL_BA ...
- 玩转X-CTR100 l STM32F4 l 定时器时间测量
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 使用处理器内部硬件定 ...
- CSS学习笔记-01-2D转换模块
首先,mark 一下 css3 新增 的 2D 转换之 W3school 的链接: http://www.w3school.com.cn/css3/css3_2dtransform.asp 转换是使 ...
- TensorFlow随机值函数:tf.random_uniform
tf.random_uniform 函数 random_uniform( shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name ...
- Python 嵌套
1 要yuanhao的首字母大写 li = [1,2,5,'taibai','yuanhao',[1,'alex',3,],True]li[4] = 'Yuanhao'print(li) li[4] ...
- 初识linux------用户和用户组
事先说明 本Linux的版本为Ubuntu. 为避免一些初学者由于权限问题特此事先说明,在非root权限下时,所有的代码加sudo:如下 (1)不在root权限 sudo useradd -m 用户名 ...