Java: md5 加密中文 & 注意编码

今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解。

后面网上搜索了一下,才知道是[编码]的问题。

以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下,md5加密结果不一样。

我没想到java也有类似的问题,不过解决办法倒很简单:

原来的代码:


1

alg.update(txt.getBytes(encoding));

只需修改为:


1

2

3

4

5

6

7

8

try

        {

            alg.update(txt.getBytes(encoding)); //

        }

        catch (UnsupportedEncodingException e)

        {

            alg.update(txt.getBytes());

        }

 

2013-11-07

时间: 2024-10-27 18:52:15

Java: md5 加密中文 & 注意编码的相关文章

js和java MD5加密

项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other co

Java md5加密 控制台传入与web传入参数 结果不匹配 || 相同字符串加密结果不同

开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD5(String originString) { if (originString != null) { try { // 创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节数组对摘

MD5加密及BASE64编码

MD5即Message-Digest Algorithm 5(信息-摘要算法5): 方法一: 添加jar包:${SPRING_HOME}/lib/jakarta-commons/commons-codec.jar import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { // 返回md5加密后的字符串 public static String md5(String message) { String md

java MD5加密

今天在写注册登录的时候想起来为密码做一个加密,于是去网上搜索用哪方面的技术,最后确定了java自带的MD5单向加密,这个好处就是加密以后是无法解密的,有利于数据的安全,代码比较少,但是需要认真理解为什么要这样写,我先把代码贴出来. 我是需要把密码加密成一个32位的字符串 public class MD5 { public static String getHash(String password) throws NoSuchAlgorithmException { ///获取MD5算法实例 得到

Java MD5加密与RSA加密

区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私钥进行解密,解密出原字符串进行比较是否一致 个人观点: RSA加密略比MD5加密牛逼一点点 但凡事都有好坏    MD5加密执行效率比RSA慢 废话不多说上栗子: MD5加密: package cn.news.util; import java.security.MessageDigest; /**

C# java MD5加密方不一致问题

说来惭愧,做开发几年了,一直在吸取,今天也写写自已关于技术的一点点理解,不正之处,请大家多多指点. 由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式,而现在需要切换到Java平台下,关键问题是如何将用户信息通过Java方式的MD5加密码到与C#同样的结果. 经过查询资料与测试,Java与C#默认的MD5加密结果是一致的,主要是编码问题. 测试一: C#代码  默认编码加密 1 class Program 2 { 3 static void Main(string[] args

python md5加密中文

import md5 md5.new(u'中文').hexdigest() 会失败,报告ascii码不能解码0x.... 原因是md5会自动将被加密的数据转成字节码,如果没有详细制定编码,则可能采用了其他编码(比如ascii), 因此要制定编码进行转码,如下: import md5 md5.new(u'中文'.encode('utf-8')).hexdigest() ref:http://bytes.com/topic/python/answers/842255-md5-hash-problem

java MD5加密工具类

1 import java.math.BigInteger; 2 import java.security.MessageDigest; 3 import java.security.NoSuchAlgorithmException; 4 5 public class MD5Utils { 6 /** 7 * 使用md5的算法进行加密 8 */ 9 public static String md5(String plainText) { 10 byte[] secretBytes = null;

C#,Java,MD5加密对等实现

1.c#实现 /* *加密生成MD5 */ public static String MD5(string s) { char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; MD5 md5 = new MD5CryptoServiceProvider(); byte[] inputBytes = System.Text.Encoding.UTF8.