八、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();
- }
- }
八、MD5加密并封装,并调用封装方法的更多相关文章
- JS中使用MD5加密
下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...
- MD5加密和sha加密
sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文 ...
- c# md5加密封装
/// <summary> /// md5加密字符串 /// </summary> /// <param name="str">需要加密的字符串 ...
- MD5加密封装
1.固定返回固定长度字符串(16位或者32位) /// <summary> /// 用MD5加密字符串,可选择生成16位或者32位的加密字符串 /// </summary> / ...
- java 调用apache.commons.codec的包简单实现MD5加密
转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...
- python接口自动化(三十四)-封装与调用--函数和参数化(详解)
简介 前面虽然实现了参数的关联,但是那种只是记流水账的完成功能,不便于维护,也没什么可读性,随着水平和技能的提升,再返回头去看前边写的代码,简直是惨不忍睹那样的代码是初级入门的代码水平都达不到.接下来 ...
- 依图语音API的C#封装以及调用进行语音转写的处理
对于语音识别,一般有实时语音识别和语音文件的识别处理等方式,如在会议.培训等场景中,可以对录制的文件进行文字的转录,对于转录文字的成功率来说,如果能够转换90%以上的正确语音内容,肯定能减轻很多相关语 ...
- Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)
Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...
- DES加密解密 与 Cookie的封装(C#与js互相加密解密)
2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密) 这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...
随机推荐
- mysql的auto-rehash简介
今天在看mysql的配置文件的时候,发现有"auto-rehash"不明白什么意思,在此记录一下,auto-rehash是自动补全的意思,就像我们在linux命令行里输入命令的时候 ...
- 51单片机通过ESP8266模块与手机进行通讯(单片机)
相关连接和资料下载: 个人博客 资料下载 Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图: 把ESP8266模块的VCC,GND,CH_PD,UTXD, ...
- python分别获取虚拟网卡和真实网卡ip
#!/usr/bin/python # -*- coding: utf-8 -*- import commands import socket import fcntl import struct C ...
- 模拟赛小结:2018 China Collegiate Programming Contest Final (CCPC-Final 2018)
比赛链接:传送门 跌跌撞撞6题摸银. 封榜后两题,把手上的题做完了还算舒服.就是罚时有点高. 开出了一道奇奇怪怪的题(K),然后ccpcf银应该比区域赛银要难吧,反正很开心qwq. Problem A ...
- Linux环境测试机器端口连通性
生产中,有很大一部分的问题都是由于不同机器间网络不同导致的,那么如何判断两台机器之间的连通性?本文介绍几种常见的方式: telnet方法wget方法ssh方法curl方法1. telnet方法格式:t ...
- ES修改最大分页数
curl -XPUT http://localhost:9200/my_index/_settings?preserve_existing=true -H 'Content-Type: applica ...
- Hangfire:任务定时调度
hangfire 资源: GitHub:https://github.com/HangfireIO/Hangfire http://hangfire.io/ http://docs.hangfire. ...
- Python 文件I/OⅢ
read()方法 read()方法从一个打开的文件中读取一个字符串.需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字. 语法: 在这里,被传递的参数是要从已打开文件中读取的字节计 ...
- web前端_js
在HTML中可以将JavaScript/JS的代码写在head中,被script标签所包裹,当浏览器解释HTML时,遇到style标签时,按照CSS规则解释,遇到Script标签时,按照JavaScr ...
- Redis常见面试问题及答案
大量key在同一时间过期,注意什么? 如果过期时间过于集中,会导致Redis可能会出现短暂的卡顿现象.严重的话会出现缓存雪崩,一般需要在时间上加一个随机值, 使用过期时间分散一些. Redis分布式锁 ...