php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)

php使用服务器端和客户端加密狗环境部署及使用记录

  • ViKey加密狗环境部署
    • 1.windows环境下部署
      • 开发文档
      • 验证代码
      • 提示Fatal error: Class 'COM' not found in
    • 2.linux环境下部署(宝塔面板)
      • 开发文档
      • 验证代码
      • 提示Fatal error: Uncaught Error: Call to undefined function VikeyFind()
    • 3.网页端使用加密狗(客户端)
      • 使用文档
      • 安装ViKey网页控件
      • 登录逻辑
        • 1.javascript验证逻辑
        • 2.HTML容器

在PHP中使用加密狗(通常被称为USB加密设备或硬件安全模块HSM)涉及与加密狗的特定硬件和API接口进行交互。每个加密狗供应商都会提供其设备的驱动程序和API文档,遵循这些文档来在PHP中集成加密狗。

  1. 了解加密狗
    • 查阅加密狗的官方文档,了解其功能、API接口和任何特定的要求。
    • 确定加密狗是否支持PHP,或者是否有可用的库或插件可以与其一起使用。
  2. 安装驱动程序
    • 在服务器上安装加密狗的驱动程序。这通常涉及将驱动程序文件上传到服务器并运行安装程序。
    • 确保驱动程序与你的操作系统和PHP版本兼容。
  3. 配置PHP
    • 根据加密狗的文档,配置PHP以使用加密狗。这可能涉及在php.ini文件中添加特定的扩展或设置。
    • 重启Web服务器以使配置更改生效。
  4. 编写代码
    • 使用加密狗提供的API函数在PHP中编写代码。这些函数允许与加密狗进行通信,执行加密、解密、签名和验证等操作。
    • 通常,使用特定的函数来打开与加密狗的连接,执行所需的操作,然后关闭连接。
  5. 测试
    • 在开发环境中测试代码,确保它可以正确地与加密狗进行通信并执行所需的操作。
    • 检查错误消息和日志,以确保没有遗漏任何重要的配置或步骤。
  6. 部署
    • 将代码部署到生产环境中,并确保加密狗已正确连接到服务器。
    • 在生产环境中进行进一步的测试,以确保代码可以正常工作并满足你的需求。

ViKey加密狗环境部署

1.windows环境下部署

开发文档

网页.PHP

验证代码

$ViKeyInterface = new COM("ViKeyActiveX.ViKeyInterface.1");
$ViKeyInterfaceVersion = $ViKeyInterface->IGetVersion();$ViKeyCount = $ViKeyInterface->IVikeyFind();
if ($ViKeyInterface->IViKeyGetError() == 0 && $ViKeyCount > 0) {$ViKeyIndex = 0;$ViKeyInterface->IVikeyUserLogin($ViKeyIndex, "11111111");if ($ViKeyInterface->IViKeyGetError() == 0) {echo "用户登陆加密狗成功! <br />";} else {echo "用户登陆加密狗失败<br /> ";}
} else {die("系统没有找到加密狗");
}

提示Fatal error: Class ‘COM’ not found in

1、在windows的“服务”里面检查COM 服务是否已经启动。如果未启动,请启动它
2、检查php目录ext文件夹下面php_com_dotnet.dll是否存在
3、在php.ini里面加入以下语句:

[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
com.allow_dcom = true

PHP 5.4.5以前的版本,只需要在php.ini中把com.allow_dcom = true打开就可以了,但是5.4.5版本以后,PHP把com/dotnet 模块集成到了一个单独的扩展中,所以需要在php.ini中加一行扩展extension=php_com_dotnet.dll,是加一行,不是打开,默认配置文件中没有这一行的,然后重启IIS或Apache,再次运行就正常了。

2.linux环境下部署(宝塔面板)

开发文档

Linux.php

验证代码

$ViKeyCount = 0;
$ViKeyErrorCode = 0;
$ViKeyErrorCode = VikeyFind($ViKeyCount);
PrintKeyValueEx("ViKeyErrorCode", $ViKeyErrorCode, "ViKeyCount", $ViKeyCount);

提示Fatal error: Uncaught Error: Call to undefined function VikeyFind()

1.php版本必须>7.2;
2.在php.ini加入extension=vikey.so
3.将vikey.so拷贝到php扩展的ext目录里面
4.将libvikey.so拷贝到系统目录里面/usr/local/lib
5.php重载配置,即可。

3.网页端使用加密狗(客户端)

使用文档

网页.支持谷歌浏览器

安装ViKey网页控件

浏览网页前请先安装“ViKey网页控件”,才可以正常的访问ViKey加密狗。

登录逻辑

在这里插入图片描述

1.javascript验证逻辑
 var ViKeyInterface;var bHasInstallVikey = 0;function IsInstallVikey() {if (bHasInstallVikey == 0) {console.log("尚未安装插件,或插件尚未正常运行");} else {console.log("插件工作正常");}}//执行加载window.onload = function () {var strSocketResult;//创建UK类ViKeyInterface = new ViKeySocketInterface();//检测控件安装setTimeout(function () {ViKeyInterface.CheckInstall();}, 1000);ViKeyInterface.ViKeySocket.onmessage = function (msg) {var FM = window.document.ViKeyForm;var ReceiveJsonData = JSON.parse(msg.data);//console.log(ReceiveJsonData);if (ReceiveJsonData.FunctionType == "VikeyFind") {if (ReceiveJsonData.ErrorCode == 0) {console.log("已找到ViKey加密锁数量:" + ReceiveJsonData.Count);} else {console.log("查找失败 ERRORCODE:" + ReceiveJsonData.ErrorCode);}} else if (ReceiveJsonData.FunctionType == "CheckInstall") {//alert("CheckInstall");if (ReceiveJsonData.ErrorCode == 0) {bHasInstallVikey = 1;IsInstallVikey();setTimeout(function () {IsInstallVikey();}, 500);}} else if (ReceiveJsonData.FunctionType == "VikeyGetHID") {if (ReceiveJsonData.ErrorCode == 0) {console.log("获取硬件序列号成功,硬件 " + ReceiveJsonData.HID);FM.etdNTID.value = ReceiveJsonData.HID;} else {console.log("获取硬件序列号失败 ERRORCODE:" + ReceiveJsonData.ErrorCode);}} else if (ReceiveJsonData.FunctionType == "VikeyUserLogin") {if (ReceiveJsonData.ErrorCode == 0) {console.log("用户登录成功" + FM.UserPin2.value);//location.href = "http://tools.qiaodu.net/dog/";/*登录逻辑,* 1.使用ajax将将FM.UserPin2.value作为参数传至后台* 2.后台加密FM.UserPin2.value* 3.设置cookie,返回给前台* 4.判断是否能正常登录* */} else {console.log("用户权限登陆失败 ERRORCODE:" + ReceiveJsonData.ErrorCode);}}};}//插件是否正常function CheckInstallEx() {//bHasInstallVikey = 0;ViKeyInterface.CheckInstall();setTimeout(function () {IsInstallVikey();}, 500);}//以用户权限登录function ViKeyUserLogon() {var FM = window.document.ViKeyForm;var ViKeyIndex = 0;ViKeyInterface.FindViKey();ViKeyInterface.VikeyGetHID(ViKeyIndex);//获取硬件IDViKeyInterface.VikeyUserLogin(ViKeyIndex, FM.UserPin2.value);}
2.HTML容器
<form action="" name="ViKeyForm" id="ViKeyForm"><table width="960" border="1" align="center" bgcolor="#dfe7df"><tr><td width="200">&nbsp;</td><td>&nbsp;</td><td><input name="btnInstall" type="button" class="ctbottom" id="btnInstall" value="检测控件"onClick="CheckInstallEx();"></td></tr><tr><td><div align="right"><span class="ctbody3">硬件序列号:</span></div></td><td><input name="etdNTID" type="text" class="cttextboxt" id="etdNTID" size="90" maxlength="32"></td><td></td></tr><tr><td><div align="right" class="ctbody3">用户密码:</div></td><td><input name="UserPin2" type="password" class="cttextboxt" id="UserPin2" autocomplete="off"></td><td><input name="btnUserPin2" type="button" class="ctbottom" id="btnUserPin2" value="用户登录"onClick="ViKeyUserLogon();"></td></tr></table>
</form>

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017657.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是HTTP/2?

HTTP/2&#xff08;原名HTTP 2.0&#xff09;即超文本传输协议第二版&#xff0c;使用于万维网。HTTP/2主要基于SPDY协议&#xff0c;通过对HTTP头字段进行数据压缩、对数据传输采用多路复用和增加服务端推送等举措&#xff0c;来减少网络延迟&#xff0c;提高客户端的页面加载…

机器人码垛机的主体结构及技术特点

在现代物流和生产线上&#xff0c;机器人码垛机以其高效、准确的特点&#xff0c;成为了不可或缺的重要设备。那么&#xff0c;这个神奇的机器人究竟由哪些部分组成?它的内部结构又有哪些奥秘呢?接下来&#xff0c;就让我们一起揭开它的神秘面纱! 一、机器人码垛机的主体结构…

QT-TCP通信

网上的资料太过于书面化&#xff0c;所以看起来有的让人云里雾里&#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系 所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端&#xff1a; MainWindow::MainWindow(QWidget *parent) …

动态规划算法:简单多状态问题

例题一 解法&#xff08;动态规划&#xff09;&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 对于简单的线性 dp &#xff0c;我们可以⽤「经验 题⽬要求」来定义状态表⽰&#xff1a; i. 以某个位置为结尾&#xff0c;巴拉巴拉&#xff1b; ii. 以某个位置为起…

语音识别--使用YAMNet识别环境音

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

HG-KN73J-S100 三菱伺服电机(750W型)

HG-KN73J-S100属于三菱MR-JE系列伺服系统&#xff0c;可以与伺服驱动器MR-JE-70A、MR-JE-70B、MR-JE-70C配套使用。HG-KN73J-S100完全替换HF-KN73J-S100。HG-KN73J-S100规格、HG-KN73J-S100参数。 HG-KN73J-S100参数说明&#xff1a;MR-JE低惯性/小容量、0.75Kw三菱伺服电机HG-…

【管理咨询宝藏94】某国际咨询公司供应链财务数字化转型方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏94】某国际咨询公司供应链&财务数字化转型方案 【格式】PDF版本 【关键词】国际咨询公司、制造型企业转型、数字化转型 【核心观点】 - 172…

SAP PP学习笔记12 - 评估MRP的运行结果

上一章讲了MRP的概念&#xff0c;参数&#xff0c;配置等内容。 SAP PP学习笔记11 - PP中的MRP相关概念&#xff0c;参数&#xff0c;配置-CSDN博客 本章来讲 MRP跑完之后呢&#xff0c;要怎么评估这个MRP的运行结果。 1&#xff0c;Stock/Requirements List and MRP List 在…

MySQL日志机制【undo log、redo log、binlog 】

前言 SQL执行流程图文分析&#xff1a;从连接到执行的全貌_一条 sql 执行的全流程?-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞20次&#xff0c;收藏12次。本文探讨 MySQL 执行一条 SQL 查询语句的详细流程&#xff0c;从连接器开始&#xff0c;逐步介绍了查询缓存、解析 S…

这些CTF,不仅学技术,还有巨额奖金!

前言&#xff1a; 不会吧&#xff0c;不会吧&#xff0c;不会还有安全er不知道CTF是什么吧&#xff1f; 在程序员的世界里&#xff0c;也有ACM这样的编程大赛&#xff0c;成为各路编程高手一较高下展示能力的平台。 那在网络安全的圈子里&#xff0c;各路黑客红客白帽子们又…

Flutter弹窗链-顺序弹出对话框

效果 前言 弹窗的顺序执行在App中是一个比较常见的应用场景。比如进入App首页&#xff0c;一系列的弹窗就会弹出。如果不做处理就会导致弹窗堆积的全部弹出&#xff0c;严重影响用户体验。 如果多个弹窗中又有判断逻辑&#xff0c;根据点击后需要弹出另一个弹窗&#xff0c;这…

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么&#xff1f; 想象一下&#xff0c;你有一个大型的乐高项目&#xff0c;你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中&#xff0c;build.gradle 就是这个清单&#xff0c;它告诉计算机如何构建&#xff08;组合&#xff09;你的软…

《Linux运维总结:ARM架构CPU基于docker-compose一离线部署consul v1.18.1集群工具》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…

【备战软考(嵌入式系统设计师)】09 - 嵌入式软件设计基础

嵌入式软件开发原理 嵌入式软件开发和我们传统的软件开发不一样。 就拿我们的QT开发&#xff0c;我们敲完代码之后直接编译运行exe看看效果&#xff0c;不行就改改再次编译运行&#xff0c;如果可以就打包exe文件相关的配置文件对吧&#xff0c;一套下来行云流水一气呵成。 …

Kansformer?变形金刚来自过去的新敌人

​1.前言 多层感知器(MLPs),也被称为全连接前馈神经网络,是当今深度学习模型的基础组成部分。 MLPs在机器学习中扮演着至关重要的角色,因为它们是用于近似非线性函数的默认模型,这得益于通用近似定理所保证的表达能力。然而,MLPs真的是我们能构建的最佳非线性回归器吗?尽管ML…

免费在线录屏、无需注册、免费可用、无限制

免费在线工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder pdf在线免费转word文档 https://orcc.online/pdf 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA…

5.7 线程

进程&#xff1a;解耦稳定&#xff0c;内容之间是不相关的&#xff0c;通信不便利&#xff0c;理论上进程的软硬件的切换时间以及创建开销非常大。--------》资源共享线程实现 线程的问题&#xff1a;本质就是不解耦&#xff0c;一个出问题别的就很有可能出问题&#xff0c;同…

关于获取邮件授权码

以网易邮箱为例: 第一步:登录之后点击设置 第二步:点击POP3/SMTP/IMAP 第三步:开启SMTP服务 开启哪个都可以 第四步: 扫描二维码开启服务 第五步: 使用手机扫面二维码发送短信 第六步: 得到授权码 将授权码写入配置文件

04-28 周日 FastAPI Post请求同时传递文件和普通参数

04-28 周日 FastAPI Post请求同时传递文件和普通参数 时间版本修改人描述04-28 周日V0.1宋全恒新建文档2024年5月6日14:20:05V1.0宋全恒完成文档的传递 简介 由于在重构FastBuild的时候&#xff0c;为了支持TLS是否启用&#xff0c;在接口中需要同时传递文件参数和其他参数&am…

matlab 基于拉依达检验法(3σ准则) 实现多类别多参数的批量异常样本检验 V2.0

简介 拉依达检验法&#xff08;3σ准则&#xff09;是一种统计学方法&#xff0c;用于检测数据中的异常值。这种方法基于正态分布的特性来确定数据点是否可能是异常值。以下是关于拉依达检验法&#xff08;3σ准则&#xff09;的详细介绍&#xff1a; 基本原理&#xff1a; 拉…