首页 > 编程语言 >N个utils(加密解密-算法初窥)

N个utils(加密解密-算法初窥)

时间:2024-09-24 10:24:09浏览次数:3  
标签:加密 String utils 解密 new sb data append MD5

MD5+SHA1

public static String signature(String appKey,String appSecret,long clientTime,String version) throws Exception {
   String pathString = "appKey=" + appKey + "&clientTime=" + clientTime+ "&version=" + version + "&" + appSecret;
   String data = DigestUtils.md5Hex(pathString); // MD5加密

   MessageDigest digest = MessageDigest.getInstance("SHA-1");
   byte[] hash = digest.digest(data.getBytes());

   // 将字节数组转换成十六进制字符串
   StringBuilder hexString = new StringBuilder();
   for (byte b : hash) {
      String hex = Integer.toHexString(0xff & b);
      if (hex.length() == 1) hexString.append('0');
      hexString.append(hex);
   }

   return hexString.toString();
}

MD5+盐

String encrypt = GenerateUtil.randomCode(6);
String s = DigestUtils.md5Hex(DigestUtils.md5Hex("123456") + encrypt);

 MD5-or-HMACSHA256

public static String generateSignature(final Map<String, String> data, String key, SignType signType) throws Exception {
    Set<String> keySet = data.keySet();
    String[] keyArray = keySet.toArray(new String[keySet.size()]);
    Arrays.sort(keyArray);
    StringBuilder sb = new StringBuilder();
    for (String k : keyArray) {
        if (k.equals(WXPayConstants.FIELD_SIGN)) {
            continue;
        }
        if (data.get(k).trim().length() > 0) // 参数值为空,则不参与签名
            sb.append(k).append("=").append(data.get(k).trim()).append("&");
    }
    sb.append("key=").append(key);
    if (SignType.MD5.equals(signType)) {
        return MD5(sb.toString()).toUpperCase();
    }
    else if (SignType.HMACSHA256.equals(signType)) {
        return HMACSHA256(sb.toString(), key);
    }
    else {
        throw new Exception(String.format("Invalid sign_type: %s", signType));
    }
}

标签:加密,String,utils,解密,new,sb,data,append,MD5
From: https://blog.csdn.net/javacynchronized/article/details/142461316

相关文章

  • 绘制印章的开源工具DrawStampUtils使用
    最近写了一个绘制印章的工具DrawStampUtils,具有比较完整的印章修改效果,定制化度较高,git地址(https://github.com/xxss0903/drawstamputils),也可以在npmjs中搜索DrawStampUtils即可//将要绘制的canvas组件的引用传入,还有就是对应的毫米转像素的大小传入即可conststampCanva......
  • Python数据库连接池dbutils详解
    简介在python开发中,如果需要连接MySQL数据库并进行数据操作,可以使用dbutils模块,dbutils是python的一个数据库工具库下载对应模块pipinstallpymysqlpipinstalldbutils连接池配置信息说明使用示例importpymysqlfrompymysql.cursorsimportDictCursorfr......
  • 【解密 Kotlin 扩展函数】扩展函数的底层原理(十八)
    导读大纲1.1.1从Java调用扩展函数1.1.2扩展函数无法重载1.1.1从Java调用扩展函数在编译器底层下,扩展函数是一种静态方法,它接受接收器对象作为第一个参数调用它不涉及创建适配器对象或任何其他运行时开销这使得从Java使用扩展函数变得非常简单调用静态......
  • Python中Sha加密算法
    '''DES:Python3.x中的加密在python3的标准库中,已经移除了md5,而关于hash加密算法都放在hashlib这个标准库中,hashlib模块就包括了SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。通常我们的加密,都是对二进制编码的格式进行加密的;而在Python中,使用的是Bytes......
  • SpringBoot前后端接口加解密--解决方案
    开放接口-通信方式采用HTTP+JSON或消息中间件进行通信。-调用接口之前需要使用登录鉴权接口获得token。-当鉴权成功之后才能调用其他接口(携带Token)。登录接口:Code 说明200 成功401 未授权,请先登录。403 没有访问权限404 接口不存在500 接口内部错误但是开放接口......
  • qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed加
    qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();qDebug()<<"OpenSSL支持情况:"<<QSslSocket::supportsSsl();打印需要的版本和当前openssl的支持情况如果显示false,不支持就是说明,不支持加密对应下载版本的openssl进行重新编译即可原因......
  • dmoleaututils.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmoleaututils.dll文件(挑选合适的版本文件)......
  • js逆向实战之烯牛数据请求参数加密和返回数据解密
    声明:本篇文章仅用于知识分享实战网址:https://www.xiniudata.com/industry/newest?from=data请求参数加密访问网址,往下翻翻,可以看到触发了如下的数据包,请求参数进行了加密。全局搜索list_industries_by_sort地址,有四处,都位于同一个文件中。随便点一个看看,可以看到有payload......
  • python+flask计算机毕业设计数据库加密系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,数据已成为企业和个人最宝贵的资产之一。然而,数据泄露和非法访问的风险也随之急剧增加,给个人隐私、企业安全乃至国......
  • js逆向实战之Bitcoin浏览器交易x-apikey参数加密逻辑
    声明:本篇文章仅用于知识分享实战网址:https://www.oklink.com/zh-hans/btc/tx-list分析过程访问网址,会触发一条数据包。看它的响应内容。就是我们想要获取的内容,找到数据了。可以先尝试直接去访问该url,看能否获取数据。importrequestsurl="https://www.oklink.com/a......