在 php 中生成数字签名


Generating digital signature in php

我曾经在Ruby中生成数字签名,如下所示:

def generate_signature
  data = "Databeingpassed"
  secret_key = "Somesecretkey" 
  digest = OpenSSL::Digest::Digest.new('sha256')
  Base64.encode64(OpenSSL::HMAC.digest(digest, secret_key, data)).strip
end
Output: 2XBK7UXA9oDsfJj1TBE2maptpB6i1MJ4uadY1AXlQOQ=

如何使用 php 实现相同的目的,我在 php 中使用以下代码,但输出不同

function generate_signature() {
  $data = "Databeingpassed"
  $secret_key = "Somesecretkey" 
  $message = hash('sha256', $secret_key, $data);
  return base64_encode($message);
}
Output: hgy/KMG3zTSgjUrzA/3nNvN+vApna6A7JqtZwx+r9Ng=

有什么想法吗?

我已经找到了一种方法,以防有人需要:

function generate_signature() {
  $data = "Databeingpassed"
  $secret_key = "Somesecretkey" 
  return base64_encode(hash_hmac('sha256', $data, $secret_key, true));
}

输出:

2XBK7UXA9oDsfJj1TBE2maptpB6i1MJ4uadY1AXlQOQ=

我有解决你的问题的方法

 $("#btnSaveSign").click(function(e){
        html2canvas([document.getElementById('sign-pad')], {
            onrendered: function (canvas) {
                var canvas_img_data = canvas.toDataURL('image/png');
                var img_data = canvas_img_data.replace(/^data:image'/(png|jpg);base64,/, "");
                //ajax call to save image inside folder
                $.ajax({
                    url: 'save_sign.php',
                    data: { img_data:img_data },
                    type: 'post',
                    dataType: 'json',
                    success: function (response) {
                    window.location.reload();
                    }
                });
            }
        });
    });

j查询数字签名