一、MD5加密

封装Md5

  1. public class Md5 {
  2.  
  3. //十六进制下数字到字符的映射数组
  4. private static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  5. 'A', 'B', 'C', 'D', 'E', 'F' };
  6.  
  7. /**把inputString加密*/
  8. public static String md5Str(String inputStr){
  9. return encrypt(inputStr);
  10. }
  11.  
  12. public static String encrypt(String inputStr) {
  13. byte[] inStrBytes = inputStr.getBytes();
  14. try {
  15. //创建具有指定算法名称的信息摘要
  16. MessageDigest MD = MessageDigest.getInstance("MD5");
  17. //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
  18. MD.update(inStrBytes);
  19. byte[] mdByte = MD.digest();
  20. char[] str = new char[mdByte.length * 2];
  21. int k = 0;
  22. for(int i=0;i<mdByte.length;i++) {
  23. byte temp = mdByte[i];
  24. str[k++] = hexDigits[temp >>> 4 & 0xf];
  25. str[k++] = hexDigits[temp & 0xf];
  26. }
  27. return new String(str);
  28. } catch (NoSuchAlgorithmException e) {
  29. e.printStackTrace();
  30. }
  31. return null;
  32. }
  33.  
  34. }

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

  1. import java.io.UnsupportedEncodingException;
  2. import java.security.InvalidKeyException;
  3. import java.security.NoSuchAlgorithmException;
  4. import java.util.TreeMap;
  5.  
  6. public class SJS {
  7.  
  8. //entrance
  9. /**
  10. * 对请求参数进行加密
  11. * @param requestParams 请求参数
  12. * @param secret 根秘钥
  13. * @return
  14. * @throws Exception
  15. */
  16. public String getSJSInfo(TreeMap<String, Object> requestParams, String secret) throws Exception {
  17. return sjsSi(buildParamStr(requestParams), secret);
  18. }
  19.  
  20. //调用MD5封装方法进行加密【入参+secret】
  21. private String sjsSi(String signStr, String secret)
  22. throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
  23. return Md5.md5Str(signStr+secret);
  24. }
  25.  
  26. //将入参(格式key=value)与&进行拼接,并返回
  27. public String buildParamStr(TreeMap<String, Object> requestParams) {
  28. StringBuilder retStr = new StringBuilder();
  29. for(String key: requestParams.keySet()) {
  30. if (retStr.length()==0) {
  31. retStr.append(key+"="+String.valueOf(requestParams.get(key)));
  32. } else {
  33. retStr.append("&"+key+"="+String.valueOf(requestParams.get(key)));
  34. }
  35. }
  36. return retStr.toString();
  37. }
  38.  
  39. }

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

  1. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

  2. MD5加密和sha加密

    sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文 ...

  3. c# md5加密封装

    /// <summary> /// md5加密字符串 /// </summary> /// <param name="str">需要加密的字符串 ...

  4. MD5加密封装

    1.固定返回固定长度字符串(16位或者32位) /// <summary> /// 用MD5加密字符串,可选择生成16位或者32位的加密字符串 /// </summary> / ...

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

    转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...

  6. python接口自动化(三十四)-封装与调用--函数和参数化(详解)

    简介 前面虽然实现了参数的关联,但是那种只是记流水账的完成功能,不便于维护,也没什么可读性,随着水平和技能的提升,再返回头去看前边写的代码,简直是惨不忍睹那样的代码是初级入门的代码水平都达不到.接下来 ...

  7. 依图语音API的C#封装以及调用进行语音转写的处理

    对于语音识别,一般有实时语音识别和语音文件的识别处理等方式,如在会议.培训等场景中,可以对录制的文件进行文字的转录,对于转录文字的成功率来说,如果能够转换90%以上的正确语音内容,肯定能减轻很多相关语 ...

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

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

  9. DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)   这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...

随机推荐

  1. 转载:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    转自:https://www.cnblogs.com/findumars/p/6309048.html 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...

  2. Layedit 编辑页面赋值

    1.编辑页面 $("[name=Experience]").val(data.Experience);//直接赋值然后再进行build experience = layedit.b ...

  3. jquery 知识整理

    大纲一.jQuery简介 二.jQuery 和Dom关系及jQuery版本 1.jQuery版本 2.jQuery和Dom转换 三.jQuery 选择器 1.1.基本 1.2.层级 2.基本筛选器 3 ...

  4. 2019/9/18 IIS服务器 ftp站安装:隔离模式

    net user ftp1  /add 添加两个账户 在d盘下创建ftp站的文件夹ftptest,进入文件夹,创建文件夹LocalUser,进入LocalUser 分别创建administrator ...

  5. 微信小程序data数组push和remove问题

    因为在做一个小程序的demo时.由于不向后台请求数据,所以就涉及到对本地数据的操作,现在就做一些数组的增删 //添加新元素 addItemFn: function () { var { lists } ...

  6. C# 扩展方法——mysql-dapper(MySqlMapperExtensions)

    其他扩展方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html 反射比较耗费性能,反射得到属性进行缓存 根据反射得到的属性,进行动态拼接sql语句 ...

  7. ORACLE获取BOM清单

    BOM 结构如图 -- 1DH142-022 (DRIVE) -- 100729421  (PCBA) -- 100764148  (HDA) -- 100687050 (VCM) -- 100701 ...

  8. 27. ClustrixDB 分布式架构/一致性、容错和可用性

    一致性 许多分布式数据库都采用最终一致性而不是强一致性来实现可伸缩性.但是,最终的一致性会增加应用程序开发人员的复杂性,他们必须针对可能出现的数据不一致的异常进行开发. ClustrixDB提供了一个 ...

  9. 数据库范式以及ER图

    数据库范式包括第一.第二.第三以及BCNF范式,关于范式的探讨,博主在知乎上看见了一篇很不错的文章,分享文中,这边就不再做阐述.地址:https://www.zhihu.com/question/24 ...

  10. 计算机网络(十),HTTP的关键问题

    目录 1.在浏览器地址栏键入URL,按下回车之后经历的流程 2.HTTP状态码 3.GET请求和POST请求的区别 4.Cookie和Session的区别 5.IPV4和IPV6 十.HTTP的关键问 ...