签名算法参考
<?php
class SsoSign
{
public static function sign($key, $imgUrl, $nickname, $profileUrl, $isvUserId){
$toSign = "img_url=".$imgUrl."&nickname=".$nickname."&profile_url=".$profileUrl."&user_id=".$isvUserId;
$signature = base64_encode(hash_hmac("sha1", $toSign, $key, true));
return $signature;
}
}
echo SsoSign::sign("16bd0e2533092b96e3e55958ef19d08a","img","nick","profile","isvUserId");
?>
package com.sohu.cmt.common.encrypt;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
/**
* HMACSHA1签名算法
*/
public class HmacSha1Utils {
private static final String HMACSHA1 = "HMACSHA1";
/**
* 计算HMACSHA1签名
*
* @param input
* @param secretKey
* @return
*/
public static String hmacSha1(String input, String secretKey) {
Mac mac = null;
try {
String keyString = URLEncoder.encode(secretKey,"UTF-8");
mac = Mac.getInstance(HMACSHA1);
Key key = new SecretKeySpec(keyString.getBytes("UTF-8"), HMACSHA1);
mac.init(key);
byte[] hashValue = mac.doFinal(input.getBytes("UTF-8"));
String encodedHashValue = new String(Base64.encodeBase64(hashValue));
return encodedHashValue;
} catch (NoSuchAlgorithmException e) {
} catch (InvalidKeyException e) {
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
}
return "";
}
public static String sign(String appKey, String imgUrl, String nickname, String profileUrl, String isvUserId){
StringBuilder sb = new StringBuilder();
sb.append("img_url=" + imgUrl);
sb.append("&");
sb.append("nickname=" + nickname);
sb.append("&");
sb.append("profile_url=" + profileUrl);
sb.append("&");
sb.append("user_id=" + isvUserId);
String sign = HmacSha1Utils.hmacSha1(sb.toString(), appKey);
return sign;
}
public static void main(String[] args){
System.out.println(sign("16bd0e2533092b96e3e55958ef19d08a", "img", "nick", "profileUrl", "isvUserId"));
}
}