如何解决从 RSAUtils.encryptByPublicKey (Java) 到 openssl_public_encrypt (PHP)
我正在尝试从 Java 代码中使用 openssl_public_encrypt 在 PHP 中进行转换,但无法在列表中管理以获取输出。
如果有人可以提供帮助,我们将不胜感激
MerchantPublicSecretKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrXM8q2qrEuH+xFVcEpeiV4yX7r/5+SsjgLD/OF3VPYqKA07xOklLXhJqT8Shjtu/uye9BahqajqOiP9PjqAsN1amGodE1POhsAO537Av+pIh1sX1ULr+0fzxWzwphE3SX2dImTwWWxdZZB45P2GMtR1F+jA4E2Ud8oO1KIaX++QIDAQAB'
userInfoJson = {
"payCardNo":"test1","payCardBank":"test2","payCardBranch":"test3"
}
Java Code
sign = =Base64Utils.encode(RSAUtils.encryptByPublicKey(userInfoJson.getBytes("UTF-8"),MerchantPublicSecretKey));
解决方法
我设法解决了这个问题,如果对这里的人有帮助,那就是解决方案
$app_secret = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrXM8q2qrEuH+xFVcEpeiV4yX7r/5+SsjgLD/OF3VPYqKA07xOklLXhJqT8Shjtu/uye9BahqajqOiP9PjqAsN1amGodE1POhsAO537Av+pIh1sX1ULr+0fzxWzwphE3SX2dImTwWWxdZZB45P2GMtR1F+jA4E2Ud8oO1KIaX++QIDAQAB';
$user_data= [
"payCardNo" => "test1","payCardBank" => "test2","payCardBranch" => "test3"
];
function encryptData ($user_data){
$user = json_encode($user_data,JSON_FORCE_OBJECT);
$pub_key = chunk_split($app_secret,64,"\n");
$pub_key = "-----BEGIN PUBLIC KEY-----\n" . $pub_key . "-----END PUBLIC KEY-----\n";
$key = openssl_pkey_get_public($pub_key);
$result = '';
for($i = 0; $i < strlen($user) / 117; $i++ ) {
$data = substr($user,$i * 117,117);
openssl_public_encrypt ($data,$encrypt,$key);
$result .= $encrypt;
}
return base64_encode($result);
}
// usage
$encrypted_data = encryptData($user_data);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。