文档章节

md5加密 控制台传入与web传入参数 md5加密结果不同

w
 walala_Lee
发布于 2017/09/10 13:53
字数 374
阅读 342
收藏 0

精选30+云产品,助力企业轻松上云!>>>

问题描述:相同的字符串,通过main方法调用md5加密的结果,与web api参数接收后,md5加密,结果却不同。

import java.io.UnsupportedEncodingException;  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
  
public class MD5Digest {  
    private static MessageDigest md5=null;  
    public static String getDigest(String msg) throws UnsupportedEncodingException, NoSuchAlgorithmException {  
        if(null == md5) {  
            md5=MessageDigest.getInstance("MD5");  
        }  
        byte[] byteArray=null;  
        byteArray=msg.getBytes();   
        byte[] md5Bytes=md5.digest(byteArray);  
        StringBuffer hexValue=new StringBuffer();  
        for(int i=0; i < md5Bytes.length; i++) {  
            int val=((int)md5Bytes[i]) & 0xff;  
            if(val < 16)  
                hexValue.append("0");  
            hexValue.append(Integer.toHexString(val));  
        }  
        return hexValue.toString();  
    }  
}  

查看MD5的代码实现(如上),会发现

byteArray=msg.getBytes();

该行代码在不同的环境下获得的结果可能不同,这样也造成MD5结果不一样的原因。

要保证在不同环境下MD5结果相同,则必须使用相同的字符编码,比如:

byteArray=msg.getBytes("UTF-8"); 

/** 对字符串进行MD5加密 */  
private static String encodeByMD5(String originString) {  
    if (originString != null) {  
        try {  
            // 创建具有指定算法名称的信息摘要  
            MessageDigest md = MessageDigest.getInstance("MD5");  
            // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算  
            byte[] results = md.digest(originString.getBytes("UTF-8"));  
            // 将得到的字节数组变成字符串返回  
            String resultString = byteArrayToHexString(results);  
            return resultString.toUpperCase();  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }  
    }  
    return null;  
}  

该问题可以通过如下代码演示:

import static org.apache.commons.codec.digest.DigestUtils.md5Hex;

String text = "error606@qq.com|工工工|!@$%&1000";

String r1 = DigestUtils.md5Hex(text);

System.out.println(r1); //b08f601a7b6b440dfa3ed6eb353c2d24

String r2 = DigestUtils.md5Hex(text.getBytes("UTF-8"));

System.out.println(r2); //b08f601a7b6b440dfa3ed6eb353c2d24

String r3 = DigestUtils.md5Hex(text.getBytes("GBK"));

System.out.println(r3); //db9e73be9742ed2a66202a62f491ef03

String r4 = DigestUtils.md5Hex(text.getBytes("ISO-8859-1"));

System.out.println(r4); //cd64703ba680391d452765d564d7e13e

 

w
粉丝 3
博文 185
码字总数 51594
作品 0
深圳
私信 提问
加载中
请先登录后再评论。
Bugku-CTF之备份是个好习惯

Day17 备份是个好习惯 听说备份是个好习惯 http://123.206.87.240:8002/web16/ 本题要点:MD5加密、.bak文件、 strstr()、substr()、strreplace()、parsestr()函数用法 看到一串md5字符 解一...

osc_3xczhhq6
2019/04/22
2
0
关于halo博客系统的使用踩坑——忘记登录密码

踩坑: halo系统可以直接通过运行jar -jar halo-0.0.3.jar跑起来,也可以通过导入IDE然后运行Application的main方法跑起系统。 h2数据库访问路径:http://localhost:8090/h2-console/ 博客浏...

osc_44jaxl0s
2019/02/13
16
0
php商用加密

在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数 MD5加密: string md5 ( string $str [, bool $raw_output = false ] ) 1.md5()默认情...

麦社
2016/06/01
21
0
Java对字符串使用MD5进行加密(亲测有效)

转自:https://blog.csdn.net/jay314159/article/details/4918358 前言:    MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的算法之一,...

osc_jbyqrnfz
2018/06/08
5
0
restful 接口 安全性设计

1、MD5混淆 第三方调用restful接口时,参数如商品名称、商品ID、金额、MD5加密(商品名称+商品ID+金额+sign),后台接口服务,获取对应的参数,然后按照MD5加密顺序,将商品名称、商品ID、金...

zhu_kai1
2018/11/28
341
0

没有更多内容

加载失败,请刷新页面

加载更多

java常用开发支持类库

UUID类 UUID是一个生成无重复字符串的程序类(JDK1.5之后出现),这个程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义(无重复指的是出现重复的概率极低)。 一般在获取UUID时...

哼着我的小调调
12分钟前
15
0
亚马逊测评买家号多开_可以解决这个问题嘛?_微信公众号: VMlogin中文版

对于很多亚马逊卖家来说,做亚马逊测评是并不可少的,都在为了自己的店铺能够获得更多的销售,着重培养自己产品的各项属性,以求获得一个更好的权重排名从而获得更多的曝光,但是在旺季期间亚...

竹节猫-ASOer
19分钟前
10
0
从封装变化的角度看设计模式——对象创建

封装变化之对象创建 在对象创建的过程中,经常会出现的一个问题就是通过显示地指定一个类来创建对象,从而导致紧耦合。这是因为创建对象时指定类名将使你受特定实现的约束而不是特定接口的约...

良许Linux
20分钟前
0
0
Java基础系列——数组之java.util.Arrays使用以及可能出现的异常(12)

java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比 如排序和搜索)的各种方法。常用方法如下所示: boolean equals(int[] a,int[] b) 判断两个数组是否相等。 String toStrin...

卢佳鹏
33分钟前
19
0
Excel 2016如何删除带超链接表格前空格?

本文演示文档包含超链接。如图 先尝试使用trim和clean函数,=substitute(a1,char(9),"")公式。效果完全一致,超链接被删除。如下图 再次使用搜索引擎,网友给出建议,先提取超链接,删除空格...

白豆腐徐长卿
35分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部