浏览 3766 次
锁定老帖子 主题:Md5加密错误问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2016-09-09
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); } } </pre> 同一个加密方法,在main方法里执行结果是对的,启动tomcat在action中调用就是错误的。 同样在tomcat执行时输出的key也是一样完全一样的,偏偏加密完成后结果跟main方法里不一样。(文件和tomcat里的设置都是utf8) 最后只能改成 <pre name="code" class="java"> String sign=""; try { sign = MD5.getMessageDigest(key.getBytes("UTF-8")).toUpperCase(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } </pre> 这样处理后才保持了一致。 安卓工程里,这段代码又是对的。。。 神奇的问题,这原因真是百思不得其解。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |