Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php签名输出副本';可编字符串_Php_Encryption_Public Key Encryption - Fatal编程技术网

php签名输出副本';可编字符串

php签名输出副本';可编字符串,php,encryption,public-key-encryption,Php,Encryption,Public Key Encryption,我需要在PHP中复制粘贴特定输入的签名,没有错误,但生成的签名是一堆符号,而不是字母数字字符,我高度假设它是因为我缺少某些编码 这是我的代码: <?php $unformatted_pub= "-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs9D/xyfj7Ocgzaytkqsp f/ABE5csbukSkmkRi9VzuxZZ9v95WJmxldH1QTIKEjAjeGuFoYY+Whqs

我需要在PHP中复制粘贴特定输入的签名,没有错误,但生成的签名是一堆符号,而不是字母数字字符,我高度假设它是因为我缺少某些编码

这是我的代码:

<?php 

$unformatted_pub= "-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs9D/xyfj7Ocgzaytkqsp
f/ABE5csbukSkmkRi9VzuxZZ9v95WJmxldH1QTIKEjAjeGuFoYY+WhqsTQYG3RuM
cZ3e0Vp26Qkkxyu2MU4fuu/ht1AYiq6SMstnS49l5D8ptjh1ZUyWjFHr+sMyHSi/
jiLUtbIK4lzpZHjMJ4g8JknKLhINLeMscRwXFEvfgSPO9AJ1hAFjuWT3UbCOS9s1
nq6daE6TexCOlXbm4rPeRHxIuZJxawPGkQAx/X9sk5mww2kJk1nbmBSll/B2qp7k
jQmXz3J/g+VwQnCIB5XtZ4bOSEVh7GBwYCkmu8PZthZVMiBlHBICTYzGyyWt2djP
lS+jen0BAIrxV3mshB4ErZsRToNCFRzGlRg1opQCJngw1NProlcGMzh1LC5C7Han
awoFUwWaGypAx2XL04WsMo4MJYgKDVN545f/SaXXVG+fTYjWX4I6GyGlqLRjfijY
SGdupIlFUdHPPKNVr1A2JZNYwBtBepvv5DEmD4+yy3gf6hwL4IYZOfUZrpl4YxoH
uZsD0Ly/2ayQBujWgmTdgoPrYB7GKwjc/jgPKvJTU965FOmKd2ujeTfed8HAky7G
DL1zrr0URMC4IZ6CtLF9BEazwzx5CrnOLZ4b2fcxgeX7C36GvNzKgD2PIhYJid10
rb/7Al/a/mWeyZGUxffhkB0CAwEAAQ==
-----END PUBLIC KEY-----";

$unformatted_priv = "-----BEGIN PRIVATE KEY-----
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
OoyA4sufCzG5Wgy5iBquldUSELkxXEM=
-----END PRIVATE KEY-----";

$data = '1234';

// compute signature
openssl_sign($data, $signature, $unformatted_priv);

echo $signature;

?>

这就是结果:


���3.��正如PHP文档示例所示,最好的方法是将签名保存到文件中,而不是复制它

//create signature
openssl_sign($data, $signature, $private_key_pem);

//save for later
file_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $signature);

//verify signature
$r = openssl_verify($data, $signature, $public_key_pem);
var_dump($r);

这是将二进制数据输出编码为可复制完美的正确方法,我假设当我想要验证它时,我会使用decode,对吗?是的。对于我的应用程序来说,它工作完美,没有任何问题。当然,但不幸的是,这是不可能的。然后我建议使用echo base64_encode($signature)进行第二次回答;然后在你需要的时候解码。
//create signature
openssl_sign($data, $signature, $private_key_pem);

//save for later
file_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $signature);

//verify signature
$r = openssl_verify($data, $signature, $public_key_pem);
var_dump($r);