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相关推荐

  1. 折返(Reentrancy)VS线程安全(Thread safety)

    在Wiki上,折返例如,下面的定义(接) In computing, a computer program or subroutine is called reentrant if it can be ...

  2. The Power of Ten – Rules for Developing Safety Critical Code

    New Horizon 探测器的代码就是 JPL 写的,真厉害 http://pixelscommander.com/wp-content/uploads/2014/12/P10.pdf Gerard ...

  3. Thread Safety in the Standard C++ Library

    2019独角兽企业重金招聘Python工程师标准>>> Thread Safety in the Standard C++ Library When  /MT , /MTd, /MD ...

  4. 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 ...

  5. dart系列之:安全看我,dart中的安全特性null safety

    文章目录 简介 Non-nullable类型 Nullable List Of Strings 和 List Of Nullable Strings !操作符 late关键字 总结 简介 在Dart ...

  6. KUKA---US2电源的安全属性-------老款硬线连接实现的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 网络帧实现的DRIVE安全STO SBC

    安全双回路的监控:(工业上的安全,是指安全等级,没有绝对的安全) 1.     机械式:监控关断继电器的辅助反馈触点,这个关断继电器包含机械联锁触点,这样反馈触点和主触点可以同步开关动作. 2.    ...

  7. CF1039C Network Safety

    CF1039C Network Safety 题意: 题解: 如果我们同时选中a,b两个点,无论异或什么值,都不会影响图的安全性,因为图本来就是安全的 破坏图的安全性只有一种情况,那就是选了a,没选b ...

  8. Coursera自动驾驶课程第4讲:Safety Assurance for Autonomous Vehicles

    在上一讲<Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures>中我们了解了自动驾驶汽车常用的传感器和硬件组 ...

  9. ab plc软件_从GuardLogix 和 CIP Safety认识安全PLC控制器

    写在面前 大家好,我是Alic,号主小智损友一枚~ 前面我们对罗克韦尔全系列PLC进行了简要介绍: 罗克韦尔AB全系列PLC产品介绍(附AB安全PLC资料下载) 其中我们就说到了GuardLogix安 ...

最新文章

  1. showdialog 尝试读取或写入受保护的内存_TreadMarks: 基于工作站网络的共享内存计算...
  2. linux c截断文件
  3. HEML、CSS、Javascript基础知识总结
  4. fastadmin 后台view data-source关联报500错误问题
  5. PHP 下载远程图片
  6. 目标检测算法 2020_One-stage目标检测算法综述
  7. 《iOS9开发快速入门》——第1章,第1.4节小结
  8. Netty阶段性学习总结(一)
  9. acs510使用技巧_ACS510-ABB操作说明
  10. 从北向南高校王牌专业浅析
  11. 论文公式编号右对齐_毕业论文的封面格式要求有哪些?
  12. 【C++学习笔记】密码转盘锁解题,记录开锁步骤
  13. linux svn图形工具,linux 下svn图形客户端smartsvn 安装
  14. perl python文本处理_Perl 调用R分词进行文本数据分析
  15. 小知识:Java中冒号(:)有哪些用法?
  16. 视频版权,JavaScript阻止360浏览器
  17. react 面试题 高级_关于React面试题汇总
  18. 启示录:日本东京都二子玉川站TOD成功建设经验
  19. upgrade pip
  20. iOS VIPER架构实践(三):面向接口的路由设计

热门文章

  1. 【Django 学习笔记】1、基础概念和MVT架构
  2. 吉林大学 软件学院 计算机网络题型总结
  3. 值得看三次的高干文_值得看三次的高干文12部
  4. html需要环境,环境.html
  5. 纯净IP地址--跨境人的爱恨情仇
  6. 尚硅谷数据结构与算法(Java)--17--归并排序
  7. 无法从服务器中获取信息,iOS7完美越狱工具evasi0n7越狱出错提示无法从网络服务器获得信息...
  8. 哪一款电容笔比较好用?平板电脑高性价比电容笔推荐
  9. DLL load failed while importing _ssl: 找不到指定的模块
  10. Springmvc html上传图片转码为base64通过ajax存入数据库中(纯html存储图片不能使用路径)完整过程