最近對接某個第三方服務,其中對接某些api需要用到他們的簽名回調,根據他們傳來的get參數和apiSecret進行拼接並使用sha1加密,然后返回弄成jsonp的格式返回,出於菜鳥的本能,首先是下載了他們的demo進行查看,發現只有java的版本,使用了DigestUtils.sha1Hex函數對字符串進行了sha1加密。
String signToken = String.valueOf(DigestUtils.sha1Hex(message + apiSecret));
然后我也如法炮制,使用了php的sha1進行加密,發現輸出字符串和java上面的函數輸出不同,自然也不能通過他的sign驗證,這時候百度了國內很多資料都查不出解決方案,最后在stackoverflow找到了答案,如此使用就可以解決了:
$sign = sha1($str, false);
希望對有需要對接api的朋友有幫助。