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); //签名值做对比
    }

  • 相关阅读:
    Android Studio 或 IntelliJ IDEA获取数字签名的方法
    android四大组件学习总结以及各个组件示例(2)
    android四大组件学习总结以及各个组件示例(1)
    Android利用canvas画画板
    Android service 服务的应用之电话监听器以及短信监听器
    Android Gesture 手势创建以及使用示例
    安卓http源码查看器详解
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    二叉树的非递归遍历(栈)
    python 游戏(滑动拼图Slide_Puzzle)
  • 原文地址:https://www.cnblogs.com/xyzq/p/6652886.html
Copyright © 2011-2022 走看看