zoukankan      html  css  js  c++  java
  • MD5加密

    一、Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

      1、主要作用:防篡改(只要消息里多了或者少了那怕一个空格,生成的秘钥都会相差很大);

      2、签名:发消息时将信息通过MD5加密,再通过Base64.encode(b)加密(),生成一个秘钥;消息和秘钥一起发送;

      3、验签:收到消息时按照同样的发放加密生成秘钥,对比接收到的秘钥和生成的秘钥,如果一致,则验证通过,进行下一步处理;

    二、具体实现步骤

      为了安全,签名时可规定加入一定特殊信息,如:报文|key,{"input":{},"sys":{},"comm_req":{}}|11111111111111111111111111111111

      实际加密是{"input":{},"sys":{},"comm_req":{}}加了|11111111111111111111111111111111后生成的密匙;

      验签时再通过同样的方法生成密钥,与传过来的密钥对比

      1.MD5签名

        

    public static String MD5Sign(String sigstr,String key){

      sigstr = sigstr +"|"+ key;
      byte[] b;
      String retStr = null;
      try {

      MessageDigest md = MessageDigest.getInstance("MD5");
      md.update(sigstr.getBytes("UTF-8"));
      byte[] tmp = md.digest();
      b = tmp ;

      //retStr即为生成的密匙
      retStr = Base64.encode(b);
      System.out.println("计算签名:" + retStr);
      } catch (UnsupportedEncodingException e) {
      new UnsupportedEncodingException("编码转换失败");
      }
      return retStr;
      }

    public static byte[] encryptMD5(byte[] source) {
    return EncryptUtils.encryptMD5(source);
    }

    2.MD5验签

      收到消息后用同样的方法生成密匙,与传过来的密匙进行对比

    public static Boolean MD5Verify(String sigstr,String key,String miShi){
    //按约定规则做相同签名
    String retStr = MD5Sign(sigstr,key);
    System.out.println("对方签名:" + miShi);
    System.out.println("验签结果:" + miShi.equals(retStr));

    return miShi.equals(retStr); //签名值做对比
    }

  • 相关阅读:
    pytest ini配置文件格式
    C#星辰之路
    bootstrap
    rabbitmq 安装
    curl 下载文件
    mysql 面试题
    mvn --version
    后台运行的nohup vs &
    scp
    linux下.tar.gz和.gz文件解压详解
  • 原文地址:https://www.cnblogs.com/xyzq/p/6652886.html
Copyright © 2011-2022 走看看