zoukankan      html  css  js  c++  java
  • 钉钉扫码登录第三方,appSecret签名算法(附包名)

    包名

    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    import org.apache.commons.codec.binary.Base64;
    

    方法

    /**
     * 1免登 - 通过appSecret计算出来的签名值,并进行urlEncode
     * 1签名算法为
     * */
    public static String getAppSecretSign(String appSecret, String timestamp) {
    	String signStr = "";
    	// 根据timestamp, appSecret计算签名值
    	try {
    		
    		String stringToSign = timestamp;
    		Mac mac = Mac.getInstance("HmacSHA256");
    		mac.init(new SecretKeySpec(appSecret.getBytes("UTF-8"), "HmacSHA256"));
    		byte[] signatureBytes = mac.doFinal(stringToSign.getBytes("UTF-8"));
    		String signature = new String(Base64.encodeBase64(signatureBytes));
    		signStr = urlEncode(signature,"UTF-8");
    	} catch (Exception e) {
    		e.printStackTrace();
    	} finally {
    		
    	}
    	return signStr;
    }
    
     /**
     * 1钉钉免登签名算法 - urlEncode
     * 
     * */
    public static String urlEncode(String value, String encoding) {
        if (value == null) {
            return "";
        }
        try {
            String encoded = URLEncoder.encode(value, encoding);
            return encoded.replace("+", "%20").replace("*", "%2A")
                .replace("~", "%7E").replace("/", "%2F");
        } catch (UnsupportedEncodingException e) {
            throw new IllegalArgumentException("FailedToEncodeUri", e);
        }
    }
  • 相关阅读:
    Linux服务器安全审计工具与流程完全指南
    谈谈站桩
    Django Push 的一些资料
    Angularjs $http服务的两个request安全问题
    Ubuntu本地uwsgi配Django问题的解决
    Angularjs Post传值后台收不到的原因
    Flex实现双轴条状图
    时间序列学习笔记
    Nuget公布Dll
    【小游戏】有意思的小游戏集合
  • 原文地址:https://www.cnblogs.com/qungmu/p/12682136.html
Copyright © 2011-2022 走看看