java hmac-sha1 算法使用

 public static String genHMAC(String data, String key) {
        byte[] result = null;
        try {
            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
            SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), HmacAlgorithm.HmacSHA1.getValue());
            //生成一个指定 Mac 算法 的 Mac 对象
            Mac mac = Mac.getInstance(HmacAlgorithm.HmacSHA1.getValue());
            //用给定密钥初始化 Mac 对象
            mac.init(signinKey);
            //完成 Mac 操作
            byte[] rawHmac = mac.doFinal(data.getBytes());
            result = Base64.getEncoder().encode(rawHmac);

        } catch (NoSuchAlgorithmException e) {
            System.err.println(e.getMessage());
        } catch (InvalidKeyException e) {
            System.err.println(e.getMessage());
        }
        if (null != result) {
            return new String(result);
        } else {
            return null;
        }
    }

 

展开阅读全文

求类似javahmac-sha1算法的delphi代码例子。

06-13

/*rn * 生成签名rn * @param method HTTP请求方法 "get" / "post" //参数1:请求方式的字符串值rn * @param url_path CGI名字, //参数2:api的相对URL的字符串值rn * @param params URL请求参数 //参数3:由request的请求名和值,构成的hashmap数据类型值rn * @param secret 密钥 //参数4:用户网站的appkey的字符串值rn * @return 签名值 //返回值,对请求值进行hmac-sha1加密算法的计算返回值。rn * @throws OpensnsException 不支持指定编码以及不支持指定的加密方法时抛出异常。rn */rn private String makeSign(String method, String url_path, HashMap params, String secret) throws OpenApiException rn String sig = "";rn try rn Mac mac = Mac.getInstance("HmacSHA1"); //1 得到一个是hmacsha1的mac对象rn SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(charset), mac.getAlgorithm()); //2 创建secretKey对象rn mac.init(secretKey); //3 用secretkey对象,初始化mac对象。rn String mk = makeSource(method, url_path, params); //4 输入method、url_path,parms参数,得到源名码rn System.out.println(mk);rn byte[] hash = mac.doFinal(mk.getBytes(charset)); //5 用mac对源名码加密,得到byte数组rn sig = new String(Base64Coder.encode(hash)); //6 encode编码,然后转化为string输出值rn // sig = encodeUrl(sig);rn catch (Exception e) rn throw new OpenApiException(OpenApiException.MAKE_SIGNATURE_ERROR, e);rn rn return sig;rn rn输入post/get 的string值、相对api的url string值、hashmap方式的request值、appkey的string值,经过hmac算法,得到计算的密码值。rn源名码=源明码 rn 论坛

没有更多推荐了,返回首页