Hàm băm mã hóa Base64 HMAC sha256 PHP

Tôi thực sự biết ơn về chức năng

echo base64_encode[hash_hmac['sha256', "My Message", "My Secret", true]];
8 nhưng có điều tôi không thể đạt được. Đó là xuất ra chuỗi giống như hàm hmac của PHP với chế độ “dữ liệu nhị phân thô” được bật

{{ $test := hmac "sha256" "My Secret" "My Message" | base64Encode }}

đầu ra.
______29

echo base64_encode[hash_hmac['sha256', "My Message", "My Secret", false]];

đầu ra.

echo base64_encode[hash_hmac['sha256', "My Message", "My Secret", true]];
9

Tất cả đều tốt, với chế độ dữ liệu mặc định [chữ thường hexits] Hugo và PHP nhận được kết quả tương tự. Thật không may, có vẻ như thứ tôi cần là đầu ra tôi nhận được với thông số sau trong đó tham số cuối cùng được đặt thành true [dữ liệu thô]

echo base64_encode[hash_hmac['sha256', "My Message", "My Secret", true]];

đầu ra.

var crypto = require['crypto'];

var key = 'the shared secret key here';
var message = 'the message to hash here';

var hash = crypto.createHmac['sha256', key].update[message];

// to lowercase hexits
hash.digest['hex'];

// to base64
hash.digest['base64'];
1

Có cách nào để đạt được kết quả tương tự với Hugo không?

Có, thứ tự đối số là đúng [khác với PHP]

Đối với ngữ cảnh, tôi đang cố gắng hết sức để làm việc với Apple News API và chính sách bảo mật của họ yêu cầu

echo base64_encode[hash_hmac['sha256', "My Message", "My Secret", true]];
8 trên các tham số được nối khác nhau. Tôi có thể chuyển xác thực thành công bằng phương thức dữ liệu thô php, nhưng không phải với phương thức riêng của Hugo

Đầu tiên, nhập văn bản thuần túy và khóa mật mã để tạo mã. Sau đó, bạn có thể sử dụng chọn hàm băm mà bạn muốn áp dụng để băm. Mặc định là SHA-256. Sau đó, bạn có thể gửi yêu cầu của mình bằng cách nhấp vào nút băm tính toán để tạo mã xác thực HMAC cho bạn

Theo mặc định, đầu ra ở định dạng văn bản thuần túy nhưng bạn cũng có tùy chọn để nhận đầu ra ở định dạng Base64. Dưới đây là một ảnh chụp màn hình của việc sử dụng

đầu vào ví dụ

BiếnValuekey
var crypto = require['crypto'];

var key = 'the shared secret key here';
var message = 'the message to hash here';

var hash = crypto.createHmac['sha256', key].update[message];

// to lowercase hexits
hash.digest['hex'];

// to base64
hash.digest['base64'];
8message
var crypto = require['crypto'];

var key = 'the shared secret key here';
var message = 'the message to hash here';

var hash = crypto.createHmac['sha256', key].update[message];

// to lowercase hexits
hash.digest['hex'];

// to base64
hash.digest['base64'];
9

Đầu ra tham chiếu cho đầu vào ví dụ ở trên

LoạiHashas hexit_______50as base64
require 'openssl'

key = 'the shared secret key here'
message = 'the message to hash here'

# to lowercase hexits
OpenSSL::HMAC.hexdigest['sha256', key, message]

# to base64
Base64.encode64[OpenSSL::HMAC.digest['sha256', key, message]]
1

PHP

Chủ Đề