/**
* RSA签名
* @param $data 待签名数据
* @param $private_key_path 商户私钥文件路径
* @return string
*/
function rsaSign($data, $private_key_path) {
$priKey = file_get_contents($private_key_path);
$res = openssl_get_privatekey($priKey);
openssl_sign($data, $sign, $res);
openssl_free_key($res);
//base64编码
$sign = base64_encode($sign);
return $sign;
}
/**
* RSA验签
* @param $data 待签名数据
* @param $ali_public_key_path 支付宝的公钥文件路径
* @param $sign 要校对的的签名结果
* @return bool
*/
function rsaVerify($data, $ali_public_key_path, $sign) {
$pubKey = file_get_contents($ali_public_key_path);
$res = openssl_get_publickey($pubKey);
$result = (bool)openssl_verify($data, base64_decode($sign), $res);
openssl_free_key($res);
return $result;
}
/**
* RSA加密
* @param $content 需要加密后内容,明文
* @param $public_key_path 商户公钥文件路径
* @return string
*/
function RsaEncrypt($content, $public_key_path){
$pubKey = file_get_contents($public_key_path);
$res = openssl_get_publickey($pubKey);
//把需要加密的内容,按128位拆开解密
$result = '';
for($i = 0; $i < strlen($content)/128; $i++ ) {
$data = substr($content, $i * 128, 128);
openssl_public_encrypt ($data, $encrypt, $res);
$result .= $encrypt;
}
$result = base64_encode($result);
openssl_free_key($res);
return $result;
}
/**
* RSA解密
* @param $content 需要解密的内容,密文
* @param $private_key_path 商户私钥文件路径
* @return string
*/
function rsaDecrypt($content, $private_key_path) {
$priKey = file_get_contents($private_key_path);
$res = openssl_get_privatekey($priKey);
//用base64将内容还原成二进制
$content = base64_decode($content);
//把需要解密的内容,按128位拆开解密
$result = '';
for($i = 0; $i < strlen($content)/128; $i++ ) {
$data = substr($content, $i * 128, 128);
openssl_private_decrypt($data, $decrypt, $res);
$result .= $decrypt;
}
openssl_free_key($res);
return $result;
}
RSA 加密解密
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、设置git 步骤:参考博文 二、查看和编辑git的配置(很实用,可以修改和查看是否设置成功和设置了什么)参考博...
- 0x01 Level 0 这道题给了一个加密的文件,是base64的,一个public.key公钥还有通往下一关的...
- 最近项目涉及到传输加密,对于现在比较安全和流行的加密技术做一个记录和分享。 Demo地址 RSA对称加密 所谓对称...
- 一开始在Android尝试使用RSA,是直接参考文章:http://blog.csdn.net/s46403680...
- 最近在跟客户的其他供应商对接微信平台,我们公司的微信平台使用node搭建的,对方未知,对方平台内向外跳转加一个额外...