我正在使用https://github.com/phpseclib/phpseclib来生成签名。但是,当我使用RSA私钥生成签名时,即会生成签名,但是当我使用公钥进行验证时,它也会给我if x.split(".jpg"):
#something
。
这是我的代码:
unverified
现在上面的代码生成签名,但是它不正确。
现在,在此之后,我尝试<?php
// Include library
include('Crypt/RSA.php');
// Create an Instance
$rsa = new Crypt_RSA();
$hash = new Crypt_Hash('sha256');
$data = array(
"name" => "hello"
);
$data = json_encode($data,true);
// Load Private Key
$rsa->loadKey('-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAlwK9IAETYwSW6p0hVEue3+WyMtRW5MA3BS2Bzf3B0Qimnvfl
....
-----END RSA PRIVATE KEY-----');
// Message to be signed
$plaintext = $data;
// Set signing signature
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_pkcs1);
$hashed = $hash->hash($plaintext);
$encrypted = $rsa->sign($hashed); // Sign Data
$signature = base64_encode($encrypted); // Encode to base64 the signed Data
echo $signature;
$rsa->loadKey('-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlwK9IAETYwSW6p0hVEue
.....
-----END PUBLIC KEY-----'); // public key
echo $rsa->verify($plaintext,$signature) ? 'verified' : 'unverified';
lib仅在.NET中使用上述密钥生成签名。它生成完美的签名,并且也经过了验证。
我不知道BouncyCastle
lib有什么问题。我也直接尝试用openssl生成,但是仍然不能生成正确的。