`
jimmy9495
  • 浏览: 296688 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Md5加密错误问题

阅读更多
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;

import cn.mpaike.interfaces.util.file.DigestUtil;

public class MD5 {

	private MD5() {}
	
	public final static String getMessageDigest(byte[] buffer) {
		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
		try {
			MessageDigest mdTemp = MessageDigest.getInstance("MD5");
			mdTemp.update(buffer);
			byte[] md = mdTemp.digest();
			int j = md.length;
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
				str[k++] = hexDigits[byte0 & 0xf];
			}
			return new String(str);
		} catch (Exception e) {
			return null;
		}
	}
	
	public static void main(String[] args) {
		String key = "8798798da测试中文加密";
		
		System.out.println("待加密字符串:" + key);
		String signB = MD5.getMessageDigest(key.getBytes()).toUpperCase();
		
		System.out.println("加密结果:" + sign);
	}
}


同一个加密方法,在main方法里执行结果是对的,启动tomcat在action中调用就是错误的。
同样在tomcat执行时输出的key也是一样完全一样的,偏偏加密完成后结果跟main方法里不一样。(文件和tomcat里的设置都是utf8)
最后只能改成

String sign="";
		try {
			sign = MD5.getMessageDigest(key.getBytes("UTF-8")).toUpperCase();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

这样处理后才保持了一致。
安卓工程里,这段代码又是对的。。。
神奇的问题,这原因真是百思不得其解。。。在此Mark
分享到:
评论

相关推荐

    MD5加密技术

    本java工程用于研究MD5加密技术。 本工程编码方式:UTF-8 说明:采用Java自带的加密...进而实现自己的加密,如果问题成立,那么就意味着全球MD5加密hex方法是相同的且使用的加密类型(algorithmType)也是相同的。

    VB MD5加密中文字符串源代码,JS中文MD5算法

    网上很多VB的md5算法,但不能加密中文字符串,虽然也生成了md5,但是是错误的,这个算法解决了该问题,附带了JS 的中文字符串MD5加密脚本。

    Java 登录、注册界面(md5加密、jdbc连接mysql)

    注意:jdbc需要自行适配,里面格式都布置好了,直接ctrl+F寻找关键字就好了,最重要的是LoginFrame里面的代码 首先,需要在项目中导入数据库...然后使用md5加密密码,并使用jdbc执行向数据库中插入新用户记录的操作。

    ASP版hmac和md5加密函数,支持中文,带unicode和utf8转码

    上次曾经传过一个易宝、支付宝、财付通、云网等多用MD5加密程序。 易宝是采用hmac的MD5加密,提供的ASP版函数不支持中文,使用dll注册那个兼容又不太好。 上次我发布的加密程序也不支持中文,且支付宝那个加密函数是...

    MD5加密C++版测试

    消息摘要算法第五版(英语:Message-Digest Algorithm 5,缩写为MD5),是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一(又译哈希算法、摘要算法等),主流编程语言普遍已有MD5的实现。...

    MD5加密(只需5条代码)

    MD5加密是这样的过程:用户输入密码转入后台,然后把该密码转为MD5后的加密字符,如果这串字符与数据库存的那串字符相匹配那就是正确了,反之错误。所以说数据库存的密码字符串也是加密过的,就算数据信息暴露也取不...

    C++实现md5加密算法

    目前,MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通 数据的错误检查领域。例如在一些BitTorrent下载中,软件将通过计算MD5检验下载到的文件片段的完整性。MD5已经广泛使用在为文件传输提供一定的可靠性方面...

    java接口 参数MD5加密.zip

    备用接口加密。 包含md5加密工具类,参数校验工具类,返回错误码枚举类,演示接口。

    最新最安全MD6 加密文件 asp C++ 网站登录安全

    继MD5被攻破后,在Crypto2008上, Rivest提出了MD6算法,该算法的Block size为512 bytes(MD5的Block Size是512 bits), Chaining value长度为1024 bits, 算法增加了并行 机制,适合于多核CPU。 在安全性上,Rivest...

    MD5加密算法(Java语言描述)

     当你按照我上面所说的方法实现MD5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试,看看程序有没有错误。  MD5 ("") = d41d8cd98f00b204e9800998ecf8427e  MD5 ("a") = 0cc175b9c0f1b6a831c399...

    密码学MD5加密算法实现源代码(vc++)

    MD5加密算法实现的源代码,vc++实现,如有错误请联系我!仅供参考学习!

    java DES,DESede,Blowfish 加密 和 MD5 加密 方法操作源码

    该文件汇总了标题所述的加密方法的操作源码,并考虑到加密数据的文件存放问题,避免了byte[]转string类型时的数据失真的bug;下面是演示部分代码和演示结果: public static void main(String[] args) { try {//...

    数据加密软件(MD5)(更正)

    对上个ND5数据加密软件的一点错误进行更正 。 功能不影响

    Oracle中的MD5加密详解

    DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =&gt;’abc’) a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于...

    md5提取器保证文件完整性

    MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,也不管它体积...

    C#与PHP的md5计算结果不同的解决方法

    问题重现 这个 API 是当时给 Lyra 应用做激活用的,遂打开 Lyra 试了下,却发现一切... MD5 md5 = System.Security.Cryptography.MD5.Create(); byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); by

    为大家经常为md5加密过的常用admin,admin888,0000密码

    admin 加密后代码: 16位加密(7a57a5a743894a0e) 32位加密(21232f297a57a5a743894a0e4a801fc3) admin888 加密后代码: 16位加密(469e80d32c0559f8) 0000 加密后代码: 16位加密(14474e4033ac29cc) 32位...

    c# 加密和解密相关代码

    添加一个Button 控件,用来使用MD5算法对输入的数据进行加密。 (3)程序主要代码如下: public string Encrypt(string strPwd) { MD5 md5 = new MD5CryptoServiceProvider(); //创建MD5 对象 byte[] data = System....

    多重加密解密程序

    01&gt;使用多位伪随机钥码加密,可加密任何类型文件. 02&gt;加密与解密与破碎,...06&gt;校验:MD5与CRC32校验码比较(与通用的MD5有差异). 07&gt;密码可以是文本或文件,可以设置两组密码是否一致. 08&gt;可以直接用鼠标拖拉文件至窗体.

    加密解密 (登陆密码)

    * @return 验证结果,TRUE:正确 FALSE:错误 */ public static boolean validatePassword(String password, String inputString){ if(password.equals( encodeByMD5(inputString))){ return true; } else{ ...

Global site tag (gtag.js) - Google Analytics