java SHA1按照value值字典排序后拼key值加密
来源:互联网 发布:好莱客衣柜价格算法 编辑:程序博客网 时间:2024/05/23 01:21
目前很多调用http接口传输数据的程序都用到加密处理,下面介绍一下sha1加密:
加密数据
Map<String, Object> map=new HashMap<String,Object>(); String key="1234567890";//key值 map.put("maps_uid","aa"); map.put("if_ac","bb"); map.put("if_mod","cc");//所要加密的字符串
SHA1加密
//获取信息摘要 - 参数字典排序后字符串 String decrypt = getOrderByLexicographic(maps,key); try { //指定sha1算法 MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.update(decrypt.getBytes()); //获取字节数组 byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexString = new StringBuffer(); // 字节数组转换为 十六进制 数 for (int i = 0; i < messageDigest.length; i++) { String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); if (shaHex.length() < 2) { hexString.append(0); } hexString.append(shaHex); } return hexString.toString().toUpperCase(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); throw new DigestException("签名错误!"); }
map的value值按照字典排序
/** * 获取参数的字典排序 * @param maps 参数key-value map集合 * @return String 排序后的字符串 */ private static String getOrderByLexicographic(Map<String,Object> maps,String key){ return splitParams(lexicographicOrder(getParamsName(maps)),maps,key); } /** * 获取参数名称 key * @param maps 参数key-value map集合 * @return */ private static List<String> getParamsName(Map<String,Object> maps){ List<String> paramNames = new ArrayList<String>(); for(Map.Entry<String,Object> entry : maps.entrySet()){ paramNames.add(entry.getValue().toString()); } return paramNames; } /** * 参数名称按字典排序 * @param paramNames 参数名称List集合 * @return 排序后的参数名称List集合 */ private static List<String> lexicographicOrder(List<String> paramNames){ Collections.sort(paramNames); return paramNames; } /** * 拼接排序好的参数名称和参数值 * @param paramNames 排序后的参数名称集合 * @param maps 参数key-value map集合 * @return String 拼接后的字符串 */ private static String splitParams(List<String> paramNames,Map<String,Object> maps,String key){ StringBuilder paramStr = new StringBuilder(); for(String paramName : paramNames){ paramStr.append(paramName); for(Map.Entry<String,Object> entry : maps.entrySet()){ if(paramName.equals(entry.getKey())){ paramStr.append(String.valueOf(entry.getValue())); } } } paramStr.append(key); logger.info("所要拼密钥的字符串:"+paramStr); return paramStr.toString(); }
结果如下:
阅读全文
0 0
- java SHA1按照value值字典排序后拼key值加密
- Java按照key值字典排序进行MD5加密
- 按照参数key或value值进行字典排序的两种java算法实现
- python3.5对字典按照key/value排序
- map中的元素按照key,value值排序
- Java<TreeMap按key排序与按照value排序>
- map的排序(按照key值和按照value值)
- 把字典的key和value的值取出来,按照顺序存入到list中
- Java Map集合按照key和value排序之法
- Map按照Value值排序
- python字典按照值排序
- (java基础知识)如何将HashMap,按照value值排序
- Java中Map按照Value值进行排序
- 对Map类分别按照Key,Value排序,返回值为List对象
- java如何对Map结构按照key值排序
- Map分别按照Key和value排序
- Map按照key和value进行排序
- Map按照Key排序和Map按照Value排序
- auth权限
- 域名解析负载均衡与socket域名访问
- Android消息推送之入门介绍
- Caffe的安装及MNIST数据集训练
- UpdateData(TRUE)和UpdateData(FALSE)
- java SHA1按照value值字典排序后拼key值加密
- Java定时器的几种用法
- SQL调优(一)
- Linux自动化安装
- CS231N神经网络
- FTP上传下载工具类
- [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标
- 服务器Tomcat 闪退问题解决方案
- [leetcode] 174. Dungeon Game