我正在尝试连接到对API使用过时的hmac哈希认证机制的API。
对于实例:
$signature = hash_hmac('sha256', $string_to_sign, $api_sec);
vs Go中生成的一个:
h := hmac.New(sha256.New, []byte(authSecret))
h.Write([]byte(stringToSign))
signature := hex.EncodeToString(h.Sum(nil))
当我使用相同的stringToSign($string_to_sign)
和相同的authSecret($api_sec)
时,使用Go生成的签名会成为该API的无效签名。但是,如果我使用PHP函数创建相同的控件,则效果很好。我对寻找哪里有些迷茫。
答案 0 :(得分:1)
您的输入数据一定有问题。
使用以下PHP:
class TimesTablesViewController: UIViewController {
@IBOutlet weak var titleLabel: UILabel!
var passedValue:String = ""
override func viewDidLoad() {
super.viewDidLoad()
titleLabel?.text = "\(passedValue) Times Table"
}
}
然后执行以下操作:
echo hash_hmac('sha256', 'data', 'key');
我得到与h := hmac.New(sha256.New, []byte("key"))
h.Write([]byte("data"))
signature := hex.EncodeToString(h.Sum(nil))
fmt.Println(signature)
相同的结果