PHP和Golang中的hmac哈希不匹配

时间:2019-02-17 21:37:17

标签: php go sha256 hmac

我正在尝试连接到对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函数创建相同的控件,则效果很好。我对寻找哪里有些迷茫。

1 个答案:

答案 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) 相同的结果