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

如下图:

水平很菜,哈哈关于java中MD5加密的简单写法?关于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();

}




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

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;

}

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


举个栗子:

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




相关文章: