PHP技巧-支付宝公钥自动整理工具开发思路和完整代码

写了上一篇文章之后,心血来潮想写个页面,做个便民工具什么的。就算声明不会存储他人密钥,可是万一别人还是不放心呢?赖上我怎么办?授人以鱼不如授人以渔嘛,本站的核心就是这个啊。所以~~~

截取函数

首先,要把这个东西整理出来,我们要让这个支付宝公钥变成四个部分,也就是三行64,一行24。第一个想到的方法是跑循环,可是我觉得没必要吧,一来我没想到什么函数适合,二来我其实心底里有个很熟悉的函数,那就是“mb_substr”这个啦。以前改过不少模板的时候,经常会用这个函数的。

官方文档:http://php.net/manual/zh/function.mb-substr.php

先来介绍下,mb_substr这个函数有四个参数:

参数 作用
str 必填,要截取的字符串变量
start 必填,开始的位置,指针第一个是0
length 可选,截取的数量,从开始位置计算,如果没这个参数则取到结尾
encoding 可选,编码格式,如果没指定则使用内部字符编码

用法示例

首先把密钥赋值给一个变量,然后用这个函数来截取字符串,再赋值变量,然后输出。

代码如下:

  1. //把密钥赋值给 $key 
  2. $key = 'MIGfMA0G*******DAQAB';
  3. //用mb_substr处理
  4. //把$key从第一个开始,也就是指针0,截取64个,编码UTF8
  5. $key1 = mb_substr( $key, 0, 64, 'utf-8');
  6. //输出变量的值
  7. echo $key1;

注意一点是,指针从0开始,所以0就是第一个,那么,64就是第65个。所以第二行的话应该这么写:

  1. //错误写法
  2. $key2 = mb_substr( $key, 65, 64, 'utf-8');
  3. //正确写法
  4. $key2 = mb_substr( $key, 64, 64, 'utf-8');

由于密钥都是字母数字和特定符号,不会出现中文或特殊符号,所以其实编码是可以不声明的,不过为了以防万一可以全局声明下,这样就不用写太多无用的定义了。代码有时候需要简洁点好。最后一个只剩下24,所以也可以不用声明了。

  1. //声明编码
  2. header("Content-type: text/html; charset=utf-8");
  3. //截取最后一段
  4. $key4 = mb_substr($key, 192);
  5. //或者
  6. $key4 = mb_substr($key, 192, 24);

完整代码

下面是完整代码,复制代码到记事本,替换$key里面的值,改为你的密钥,然后重命名为key.php。把文件放在PHP主机环境下运行打开即可得到转换后的内容,然后直接复制内容做成支付宝公钥。

  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. //替换括号里的内容。
  4. $key = 'MIGfMA0G*******DAQAB';
  5. $key1 = mb_substr($key, 0, 64);
  6. $key2 = mb_substr($key, 64, 64);
  7. $key3 = mb_substr($key, 128, 64);
  8. $key4 = mb_substr($key, 192);
  9. echo "-----BEGIN PUBLIC KEY-----<br>";
  10. echo $key1."<br>";
  11. echo $key2."<br>";
  12. echo $key3."<br>";
  13. echo $key4."<br>";
  14. echo "-----END PUBLIC KEY-----<br>";
  15. ?>

扩展阅读

1,由于证书格式规定,所以加了第12行和17行;

2,PHP中,多个变量或字符串之间,用“.”连接起来;

3:如果第三个参数没设定,第四个请勿设定,否则报错;

4:这个函数如果未开启,请在php.ini里修改开启。

开启方法,搜索“php_mbstring”,把;extension前面的分号去掉。然后重启环境。

5:如果想验证长度,可以利用另一个函数“strlen”。

  1. echo strlen(trim($key1)).'--';
  2. echo strlen(trim($key2)).'--';
  3. echo strlen(trim($key3)).'--';
  4. echo strlen(trim($key4));

实际如出如图

PHP技巧-支付宝公钥自动整理工具开发思路和完整代码

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情