八、MD5加密并封装,并调用封装方法

一、MD5加密

封装Md5

public class Md5 {

    //十六进制下数字到字符的映射数组
    private static final char hexDigits[] = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘,
            ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘ };

    /**把inputString加密*/
    public static String md5Str(String inputStr){
        return encrypt(inputStr);
    }

    public static String encrypt(String inputStr) {
        byte[] inStrBytes = inputStr.getBytes();
        try {
            //创建具有指定算法名称的信息摘要
            MessageDigest MD = MessageDigest.getInstance("MD5");
            //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
            MD.update(inStrBytes);
            byte[] mdByte = MD.digest();
            char[] str = new char[mdByte.length * 2];
            int k = 0;
            for(int i=0;i<mdByte.length;i++) {
                byte temp = mdByte[i];
                str[k++] = hexDigits[temp >>> 4 & 0xf];
                str[k++] = hexDigits[temp & 0xf];
            }
            return new String(str);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

}

二、一般   请求参数+secret    进行加密,故再次进行封装,并返回【请求参数+secret 】MD5加密后的字符串(32位)

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.TreeMap;

public class SJS {

    //entrance
    /**
     * 对请求参数进行加密
     * @param requestParams 请求参数
     * @param secret 根秘钥
     * @return
     * @throws Exception
     */
    public String getSJSInfo(TreeMap<String, Object> requestParams, String secret) throws Exception {
        return sjsSi(buildParamStr(requestParams), secret);
    }

    //调用MD5封装方法进行加密【入参+secret】
    private String sjsSi(String signStr, String secret)
        throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
        return Md5.md5Str(signStr+secret);
    }

    //将入参(格式key=value)与&进行拼接,并返回
    public String buildParamStr(TreeMap<String, Object> requestParams) {
        StringBuilder retStr = new StringBuilder();
        for(String key: requestParams.keySet()) {
            if (retStr.length()==0) {
                retStr.append(key+"="+String.valueOf(requestParams.get(key)));
            } else {
                retStr.append("&"+key+"="+String.valueOf(requestParams.get(key)));
            }
        }
        return retStr.toString();
    }

}

原文地址:https://www.cnblogs.com/chushujin/p/11387236.html

时间: 2024-09-30 15:10:03

八、MD5加密并封装,并调用封装方法的相关文章

易语言-MD5加密16位和32位方法

取数据摘要 (到字节集 (文本))  这个取到的是32位的  取文本中间 (取数据摘要 (到字节集 (文本)), 9, 16)  这个取到的是16位的 原文地址:https://www.cnblogs.com/hongyuyingxiao/p/9630544.html

MD5加密和sha加密

sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文信息A和识别码B之间同时满足以下条件: 1.对于任意两条不同的明文信息A1.A2,其识别码B1.B2都不相同. 2.无法通过逆向算法由识别码B倒推出明文信息A. MOONCRM的用户密码采用SHA1加密存储,即服务器上存储的只是 由用户密码生成的识别码,而用户密码本身并没有存储在服务器上.用户输入登

网页使用MD5加密

使用MD5加密的方法: 下载md5.js文件(点击下载),在网页中引用该文件: < script type="text/javascript" src="md5.js">< /script> 在你需要使用MD5加密的地方如此调用: < script type="text/javascript" >   hash = hex_md5("input string"); < /script&

【iOS】MD5加密与网络数据安全

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密. MD5算法在国内用的很多. MD5算法的特点: *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经包装好了MD5算法. 可以将其写成字符串的分类: - (NSString *)md5String { const char *string = self.UTF8String; int length = (int)strlen(string)

java 调用apache.commons.codec的包简单实现MD5加密

转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ 1 import java.security.MessageDigest; 2 import java.security.NoSuchAlgorithmException; 3 4 import org.apache.commons.codec.digest.DigestUtils;//开发的jar包 使用更方便 5 public class MD5 { 6 7 /* 8

Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对象受到对象动态绑定机制的限制使得DLL 在封装对象方面有一定的技术难度导致有些Delphi 程序员误以为DLL 只支持封装函数不支持封装对象本文着重介绍了DLL 中封装和调用对象的原理和思路并结合实例给出了多种不同的实现方法关键字动态链接库DLL 对象接口虚方法动态绑定类引用面向对象1 物理封装与动

如何调用封装的私有方法或私有对象

一般情况下,一个对象的私有方法或私有属性,是无法调用的,但在开发过程中,突然发现我们要钻牛角了,你不准调,但我一定要调 例前段时间,在项目中客户提出了能对报表的列进行顺序调整,并且同一台机子上不同的账号登录修改后的保存能独立,这个好解决应用微软的CacheManager能很好的解决,牛角来了....如果我要在项目中删除所有关于某个报表的记忆缓存咋办,可是只有一个公共的Remove(String Key)方法:问题是Key我用的是用户账号,我不想循环系统所有的账号去删除..... 在调试过程我发现

android-async-http二次封装和调用

Android  android-async-http二次封装和调用 在开发过程中,网络请求这块的使我们经常遇到的一个问题,今天去github 网站上面学习android-async-http,觉得还是不错的  使用起来也比较简便   网络请求框架是一个不错的选择   方便大家一起共同讨论   QQ群:160373684 /** * * @类描述:android-async-http 进行封装的类 * @项目名称: * @包名: * @类名称:AndroidAsyncHttpHelper * @

【C++】多个类的DLL封装及调用

[C++]多个类的DLL封装及调用 分类: [编程语言]2012-07-11 18:53 6399人阅读 评论(12) 收藏 举报 dllc++includebuild2010 目录(?)[+] 网上大多是将函数封装成dll的教程,类的封装也是基本相似的. 创建DLL 在VS2010中新建一个win32->dll工程.如我建立的工程名为FaceDLL 添加facedll.h的头文件(里面定义dll的接口,调用时会用到) [cpp] view plaincopy #pragma once #ifd