php rsa加密乱码_php RSA 加密 解密 验签

注:加密的内容长度是有限制的,具体可参考

密钥生成

A为客户端 B为服务端

A手里有一套密钥(私钥A/公钥A)

B手里有一套密钥(私钥B/公钥B)

A将公钥A发给B

B将公钥B发给A

注:两套公钥目的是为了保证确实是AB双方在通信,双方的私钥加签是为了标明自己的身份,如果只是对数据进行保护,防止被窃取,服务器只颁发一套密钥也可以

A向B发送请求流程:

2. A用 私钥A + msg获取签名SignA

3. A用 公钥B 将SignA + msg 加密 得到 要发送的密文 secret

4. B 收到 A 发送过来的密文 secret 使用 私钥B 进行解密 得到 SignA + msg (第一次解密)

5. B 使用 公钥B + msg +signA进行验签操作(第二次验签)

image

/**

* Created by PhpStorm.

* User: 80752

* Date: 2018/9/12

* Time: 21:30

*/

if (! function_exists('url_safe_base64_encode')) {

function url_safe_base64_encode ($data) {

return str_replace(array('+','/', '='),array('-','_', ''), base64_encode($data));

}

}

if (! function_exists('url_safe_base64_decode')) {

function url_safe_base64_decode ($data) {

$base_64 = str_replace(array('-','_'),array('+','/'), $data);

return base64_decode($base_64);

}

}

class RSA

{

/**

* 选择在创建CSR时应该使用哪些扩展。可选值有 OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC. 默认值是 OPENSSL_KEYTYPE_RSA.

*/

const RSA_ALGORITHM_KEY_TYPE = OPENSSL_KEYTYPE_RSA;

/**

* 签名算法, 默认为 OPENSSL_ALGO_SHA1

*/

const RSA_ALG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值