safety.php,SafetyFactory.php
namespace ApiSafety;
include('./ExceptionApi.php');
include('./Sign.php');
include('./StrEncryption.php');
include('./Jwt.php');
include('./Rsa.php');
use ApiSafety\ExceptionApi;
use ApiSafety\Sign;
use ApiSafety\StrEncryption;
use ApiSafety\Jwt;
use ApiSafety\Rsa;
/**
* 接口安全基础类(工厂模式)
*/
class SafetyFactory
{
/**
* 工厂
* @param string $transport 对象名
* @param string $key 密钥
* @param string $public_key [商户公钥]
* @param string $private_key [商户私钥]
*/
public static function factory($transport,$key = "",$public_key = "",$private_key = "")
{
switch ($transport) {
case 'Sign':
return new Sign($key);
break;
case 'StrEncryption':
return new StrEncryption($key);
break;
case 'Jwt':
return new Jwt($key);
break;
case 'Rsa':
return new Rsa($public_key, $private_key);
break;
}
}
}
$transport = SafetyFactory::factory('Jwt', 'e0ec9dd0a553cab62130a4deec68f64e');
$payload = array('sub' => '1234567890', 'name' => 'John Doe', 'iat' => 1516239022);
echo $transport->getToken($payload);
echo "
=======
";
$transport = SafetyFactory::factory('StrEncryption', '151515156768687');
echo $transport->system_encrypt('99990099999');
echo "
======
";
$transport = SafetyFactory::factory('Sign', '151515156768687');
echo $transport->getSign($payload);
echo "
======
";
$private_key = '-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALpcI/jRCR8KRkxt
AiNCLLMFRwcrTfrsM9Nnp/ocBnBcWtc6I9VeDAqDGbAeBuVTZbUSIgD5o8GQRnoG
VOWGRk8YZiogoRVwAHSFtmdp3zi/yz0rukx494CxA+n6EGvr1pABwqw3Q/X7afZ0
N9iI2gUekTkshB9IBDZ+64cWxK1jAgMBAAECgYAwt11/8cUcpCb0W5qvdOESe1Ky
ARQFgDGcFgDHVQQp4zqsALrVUBx9sv/IFlFfKYnw56iT8K5qLzj9NSKETbGbEL7t
GlSrDgeqyoBC/AP7WQ9hVZRh7GXomSt7Aw6YmkpfG7vcCk+FX1hp4CvVG3qE+fiJ
1mwm84042Yj1/zNyoQJBAPMpDcIDL+5nQunF10a5Sw65q3+2HdtqEoQIUQooodti
uoXmgRz5fcIyexn1gBVg4P7WkDd04jih/xtGoby6s3UCQQDEM0fdPtbxB/AB+7fS
O8ElhZvg42AI2CEk+OetecFxp9+sWZJa2a+l+T3mKHILHkg36fEd2n/yz3jbdVM1
b/p3AkEAwPXYNBjhZXfOUsMsFbSfCn1uyfcUdHUVYm9TGBOsdfM//1gvJ3YZRQ1Y
QP5f+RcbFT/hzBBWIQj074k6ehFSrQJBAIeAmytUEQKaZsoX3NaXakfNxOBGaLby
/cEZHniS1GT4eeQAYLHaEhNg1b01Rb4kBeCH83yYwTEi1OdMWlFXqvUCQCk6+5p8
EVUSuzKr4kUJEpDQqazT4SWbQIjEZNBREXaffndjHACl55zvMJC15HzXVQ6Yo3+k
2NYff+L6VJCR5xM=
-----END PRIVATE KEY-----';
//公钥
$public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6XCP40QkfCkZMbQIjQiyzBUcH
K0367DPTZ6f6HAZwXFrXOiPVXgwKgxmwHgblU2W1EiIA+aPBkEZ6BlTlhkZPGGYq
IKEVcAB0hbZnad84v8s9K7pMePeAsQPp+hBr69aQAcKsN0P1+2n2dDfYiNoFHpE5
LIQfSAQ2fuuHFsStYwIDAQAB
-----END PUBLIC KEY-----';
$transport = SafetyFactory::factory('Rsa', '' , $public_key, $private_key);
echo $transport->privateEncrypt('1ee1e1');
echo "
======
";
一键复制
编辑
Web IDE
原始数据
按行查看
历史
safety.php,SafetyFactory.php相关推荐
- 折返(Reentrancy)VS线程安全(Thread safety)
在Wiki上,折返例如,下面的定义(接) In computing, a computer program or subroutine is called reentrant if it can be ...
- The Power of Ten – Rules for Developing Safety Critical Code
New Horizon 探测器的代码就是 JPL 写的,真厉害 http://pixelscommander.com/wp-content/uploads/2014/12/P10.pdf Gerard ...
- Thread Safety in the Standard C++ Library
2019独角兽企业重金招聘Python工程师标准>>> Thread Safety in the Standard C++ Library When /MT , /MTd, /MD ...
- signature=78718ebfda6f8d955fae3e9c9c284f5d,SKI SAFETY BINDING WITH SWIVELLING SOLE PLATE
摘要: A ski safety binding has a sole plate which swivels parallel to the surface of the ski, a pair o ...
- dart系列之:安全看我,dart中的安全特性null safety
文章目录 简介 Non-nullable类型 Nullable List Of Strings 和 List Of Nullable Strings !操作符 late关键字 总结 简介 在Dart ...
- KUKA---US2电源的安全属性-------老款硬线连接实现的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 网络帧实现的DRIVE安全STO SBC
安全双回路的监控:(工业上的安全,是指安全等级,没有绝对的安全) 1. 机械式:监控关断继电器的辅助反馈触点,这个关断继电器包含机械联锁触点,这样反馈触点和主触点可以同步开关动作. 2. ...
- CF1039C Network Safety
CF1039C Network Safety 题意: 题解: 如果我们同时选中a,b两个点,无论异或什么值,都不会影响图的安全性,因为图本来就是安全的 破坏图的安全性只有一种情况,那就是选了a,没选b ...
- Coursera自动驾驶课程第4讲:Safety Assurance for Autonomous Vehicles
在上一讲<Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures>中我们了解了自动驾驶汽车常用的传感器和硬件组 ...
- ab plc软件_从GuardLogix 和 CIP Safety认识安全PLC控制器
写在面前 大家好,我是Alic,号主小智损友一枚~ 前面我们对罗克韦尔全系列PLC进行了简要介绍: 罗克韦尔AB全系列PLC产品介绍(附AB安全PLC资料下载) 其中我们就说到了GuardLogix安 ...
最新文章
- showdialog 尝试读取或写入受保护的内存_TreadMarks: 基于工作站网络的共享内存计算...
- linux c截断文件
- HEML、CSS、Javascript基础知识总结
- fastadmin 后台view data-source关联报500错误问题
- PHP 下载远程图片
- 目标检测算法 2020_One-stage目标检测算法综述
- 《iOS9开发快速入门》——第1章,第1.4节小结
- Netty阶段性学习总结(一)
- acs510使用技巧_ACS510-ABB操作说明
- 从北向南高校王牌专业浅析
- 论文公式编号右对齐_毕业论文的封面格式要求有哪些?
- 【C++学习笔记】密码转盘锁解题,记录开锁步骤
- linux svn图形工具,linux 下svn图形客户端smartsvn 安装
- perl python文本处理_Perl 调用R分词进行文本数据分析
- 小知识:Java中冒号(:)有哪些用法?
- 视频版权,JavaScript阻止360浏览器
- react 面试题 高级_关于React面试题汇总
- 启示录:日本东京都二子玉川站TOD成功建设经验
- upgrade pip
- iOS VIPER架构实践(三):面向接口的路由设计
热门文章
- 【Django 学习笔记】1、基础概念和MVT架构
- 吉林大学 软件学院 计算机网络题型总结
- 值得看三次的高干文_值得看三次的高干文12部
- html需要环境,环境.html
- 纯净IP地址--跨境人的爱恨情仇
- 尚硅谷数据结构与算法(Java)--17--归并排序
- 无法从服务器中获取信息,iOS7完美越狱工具evasi0n7越狱出错提示无法从网络服务器获得信息...
- 哪一款电容笔比较好用?平板电脑高性价比电容笔推荐
- DLL load failed while importing _ssl: 找不到指定的模块
- Springmvc html上传图片转码为base64通过ajax存入数据库中(纯html存储图片不能使用路径)完整过程