您的位置 首页 java

http签名验证+MD5加密

今天的积累都是为了更好的明天,加油!我是java程序员可以关注我一起学习哈!

记录下自己,话不多说,直接上代码:

/**

* http请求工具

* @author kangzhuang

*/

public class HttpSendUtils {

/**

* 引入日志

*/

 private static final Logger logger =LoggerFactory.getLogger(HttpSendUtils.class); 
 

private static final String CHARSET_UTF8 = “utf-8”;

private static final String SEPEATER = “_”;

/**

* post请求,json方式请求,默认编码utf8

*

* @param url

* @param params

* @return

*/

 public static String doPostJson(String url,  Map  params) {
 return sendPostRequest(url, params, CHARSET_UTF8);
 }
 

/**

* post请求,json方式请求,可自定义编码格式

* @param url 请求地址

* @param params 需要穿的参数

* @param charset 设置字符集

* @return 响应json报文数据

*/

 public static String sendPostRequest(String url, Map<String,String> params, String charset) {
 CloseableHttpClient httpClient = null;
 HttpPost httpPost = null;
 String result = null;
 try {
 httpClient = HttpClientBuilder.create().build();
 httpPost = new HttpPost(url);
 // 设置参数
 JSONObject jsonParam = new JSONObject();
 if (params != null && params.size() > 0) {
 // 将参数转换为json格式
 Iterator iterator = params.entrySet().iterator();
 while (iterator.hasNext()) {
 Map.Entry elem = (Map.Entry) iterator.next();
 jsonParam.put(String.valueOf(elem.getKey()), elem.getValue());
 }
 }
 if (jsonParam.size() > 0) {
 StringEntity entity = new StringEntity(jsonParam. toString (), charset);
 
 // 这里务必设置为application/json;charset=UTF-8
 entity.setContentType("application/json;charset=UTF-8");
 entity.setContentEncoding( char set);
 // 设置参数
 httpPost.setEntity(entity);
 }else{
 logger.error("sendPostRequest参数jsonParam.toString()参数为空!");
 }
 // 发送请求
 HttpResponse response = httpClient.execute(httpPost);
 // 返回响应
 if (response == null) {
 
 return null;
 }
 HttpEntity entity = response.getEntity();
 if (entity != null) {
 result = EntityUtils.toString(entity, charset);
 
 }
 } catch (Exception e) {
 logger.error(" sendPostRequest 出现异常:"+e);
 }
 return result;
 }
 

/**

* 加密参数拼接

* @param map

* @return

*/

 public static String getSign(Map<String, String> map) {
 
 String accessKeyId = (String) map.get("accessKeyId");
 String timestamp = (String)map.get("timestamp");
 String saltStr = (String) map.get("saltStr");
 // 根据accessKeyId查询对应的accessKeySecret
 String accessKeySecret = (String)map.get("accessKeySecret");
 // 生成签名
 StringBuilder builder = new StringBuilder();
 builder. append (accessKeyId).append( "_").append(timestamp).append( "_")
 .append(saltStr).append( "_").append(accessKeySecret).append( "_").append(accessKeyId);
 logger.error("getSign 返回结果builder.toString():{}"+builder.toString());
  md5 Util md5 = new MD5Util();
 //加密
 String targetSign = md5.toDigest(builder.toString());
 return targetSign;
 }
 

/**

* md5 加密工具

* @author kangzhuang

*/

public class MD5Util {
 /**
 * 引入日志
 */ private static final Logger logger = LoggerFactory.getLogger(MD5Util.class);
 /**
 * 简单 md5加密 
 * @param originalText 加密前的文本信息
 * @return
 */ public static String toDigest(String originalText) {
 char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
 try {
  byte [] strTemp = originalText.getBytes(StandardCharsets.UTF_8);
 MessageDigest mdTemp = MessageDigest.getInstance("MD5");
 mdTemp.update(strTemp);
 byte[] md = mdTemp.digest();
 int j = md.length;
 char[] str = new char[j * 2];
 int k = 0;
 for (int i = 0; i < j; i++) {
 byte byte0 = md[i];
 str[k++] = hexDigits[byte0 >>> 4 & 15];
 str[k++] = hexDigits[byte0 & 15];
 }
 return new String(str);
 } catch (Exception e) {
 logger.error("MD5Util toDigest error:{}"+e);
 return null;
 }
 }
}
 

——————————————————

引入依赖

<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpclient</artifactId>
 <version>4.5.6</version>
</dependency>
<!--  -->
<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpcore</artifactId>
 <version>4.4.6</version>
</dependency>
 

/**

* 主方法

* @param args

*/

 public static void main(String[] args) {
 // 请求的url地址
 String url = "";
 Map<String, String> map = new HashMap<String, String>();
 // 提供的accessKeyId
 map.put("accessKeyId", "y666");
 // 随机生成32位盐值
 map.put("saltStr", "33333");
 // 当前时间的时间戳
 map.put("timestamp",String.valueOf(new Date().getTime()));
 // 根据accessKeyId查询对应的accessKeySecret
 map.put("accessKeySecret","66666");
 map.put("sign", getSign(map));
 for(Map.Entry<String, String> entry : map.entrySet()) {
 if (StringUtil.isEmpty(entry.getValue())) {
 logger.error("请求参数有空值:"+entry.getKey());
// return entry.getKey()+"为空";
 }
 }
 String result = HttpSendUtils.sendPostRequest(url, map, CHARSET_UTF8);
 JSONObject jsonObject = JSONObject.parseObject(result);
 jsonObject.getString("code");
 }
} 
 

——————————————————-

有问题欢迎大家留言讨论!

文章来源:智云一二三科技

文章标题:http签名验证+MD5加密

文章地址:https://www.zhihuclub.com/185660.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图