关于java中MD5加密的简单写法?

昨天上网找了一下发现可以很简单的就能实现加密解密,不对的地方欢迎指出:

如下图:

水平很菜,哈哈吐舌头吐舌头

前提:

maven项目注入依赖:

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.8</version>
</dependency>

</dependencies>


1.首先我对需要加密的字段做了一个拼接,因为是多个参数需要拼接成一个字符串,

因为md5加密是要按照:key=value&key1=value2的形式从左到右要按照首字母排序,所以.....

参数:

map:多个字段以key-value存到map里,如果只有一个字段直接调用加密方法即可(第二张图),不用拼接

key:需要在末尾拼接的密钥,此时key=传入的key值,不参与字段排序,所以额外拼接,key为非必须参数,根据具体业务而定

TreeMap:再存入treemap是为了可以自动排序;

遍历拼接

public static String pinjie(Map<String,Object> map,String key) {
StringBuilder sb=new StringBuilder();
TreeMap<String, Object> treemap=new TreeMap<>();
//遍历Map
Set<Entry<String, Object>> ens=map.entrySet();
for (Entry<String, Object> entry : ens) {
treemap.put(entry.getKey(), entry.getValue());


}
Set<Entry<String , Object>> et=treemap.entrySet();
for(Entry<String, Object> e:et) {
sb.append(e.getKey()+"="+e.getValue()+"&");


}
//追加密匙
sb.append("key="+key);

return sb.toString();

}





2.加密方法传入需要加密的字符串。

加密验证:参数md5是传入已经加密过的(签名),进行再次加密对比

public static String md5(String text) throws Exception {
        //加密后的字符串
        String encodeStr=DigestUtils.md5Hex(text);
        System.out.println("MD5加密后的字符串为:encodeStr="+encodeStr);
        return encodeStr;
        }
/**
* 验证加密
* @throws Exception 
*/
public static boolean validate(String text,String md5) throws Exception {
String s=md5(text);
if(s.equals(md5)) {
return true;
}
return false;

}



举个栗子:

public static void main(String[] args) throws Exception {
Map<String, Object> map=new HashMap<>();
map.put("c", "c");
map.put("a", "a");
map.put("1", 1);
String s=pinjie(map,"i am key");
System.out.println("拼接后是:"+s);
md5(s);


}

结果输出:

拼接后是:1=1&a=a&c=c&key=i am key
MD5加密后的字符串为:encodeStr=a60ce8230c39fe7ad57dcef8ebce09fd




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值