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

php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)
php使用服务器端和客户端加密狗环境部署及使用记录 ViKey加密狗环境部署1.windows环境下部署开发文档验证代码提示Fatal error: Class COM not found in 2.linux环境下部署(宝塔面板)开发文档验证代码提示Fatal error: Uncaught Error: Call to undefine…...

Android selinux权限
一.SE 概述 SELinux 是由美国NSA(国安局)和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。从 fedora core 2开始, 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…...

Flutter笔记:Widgets Easier组件库(9)使用弹窗
Flutter笔记 Widgets Easier组件库(9):使用弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…...

【解决Android Studio】cmake报错找不到vulkan包
1 报错信息 CMake Error at D:/Android/project/cmake/3.10.2.4988404/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Vulkan (missing: Vulkan_LIBRARY) Call Stack (most recent call first): 2. 错误原因 minSdk版本不对&am…...
手动卸载32 位office
首先通过控制面板或软件管家卸载office,控制面板没有显示出来,按照以下步骤处理: 1)删除残余文件 C:\Program Files\Microsoft Office C:\Program Files (x86)\Microsoft Office 2)删除残余注册表信息 计算机\HKEY_CL…...
python selenium 滑动后获取动态追加的元素
在使用Python的Selenium库进行网页自动化时,如果需要滑动页面并获取动态追加的元素,可以使用以下步骤: 使用Selenium定位到滑动条元素。 执行滑动操作,可以调用execute_script方法来模拟滑动。 使用WebDriverWait和expected_co…...

【idea-sprongboot项目】在linux服务器上纯远程开发方式
继上一篇博客【idea-sprongboot项目】SSH连接云服务器进行远程开发-CSDN博客 目录 五、远程开发方式 2)纯远程开发方式 步骤 五、远程开发方式 2)纯远程开发方式 实现原理, 步骤 (1)首先,关闭当前正在…...

ADC模-数转换原理与实现
1. 今日摸鱼计划 今天来学习一下ADC的原理,然后把ADC给实现 ADC芯片:ADC128S102 视频: 18A_基于SPI接口的ADC芯片功能和接口时序介绍_哔哩哔哩_bilibili 18B_使用线性序列机思路分析SPI接口的ADC芯片接口时序_哔哩哔哩_bilibili 18C_基于线性序列机的S…...

Android 文件传输
目录 device explorer 文件目录关系对应: device explorer 经常写adb命令传文件,结果发现Android studio有自带的文件管理器,可以上传下载文件。 tool windows ->device explorer 文件目录关系对应: Android java获取的程序…...

一起深度学习
CIFAR-10 卷积神经网络 下载数据集构建网络运行测试 下载数据集 batchsz 32cifar_train datasets.CIFAR10(data,trainTrue,transformtorchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()]),downloadTrue)cifar_train …...

servlet-会话(cookie与session)
servlet会话技术 会话技术cookie创建Cookieindex.jspCookieServlet 获取Cookieindex.jspshowCookie session创建sessionindex.jsplogin.jspLoginServlet 获取sessionRedurectServket 清除会话login.jspClearItmeServlet 会话技术 两种会话:cookie,sessi…...

windows11忘记登录密码怎么办?
STEP1:进入Win RE界面 1.按住shift不要松手,点击重新启动,进入WINRE界面 2.选择疑难解答 选择高级选项 点击命令提示符 STEP2:替换utilman 1.输入以下代码查看所在windows所在盘 diskpart list volume exit 2.根据所在盘输入命令(以C盘为…...

C#里如何设置输出路径,不要net7.0-windows
官网介绍: 更改生成输出目录 - Visual Studio (Windows) | Microsoft Learn <PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</Appen…...

知名员工上网行为管理系统推荐榜单
上网行为管理软件旨在帮助组织监控和管理员工的网络活动,以提高工作效率、确保网络安全和合规性。以下是一些常见的上网行为管理软件: Ping32:Ping32是一款专业的员工上网行为管理系统,Ping32作为一款专业的员工上网行为管理系统&…...

第12章 软件测试基础(第三部分)测试类型、测试工具
七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…...
open-vm-tools使用虚机的拷贝/粘切
open-vm-tools 是一组用于 VMware 虚拟机中的开源工具,它们提供了一些与虚拟机操作和管理相关的功能。这些工具与 VMware 虚拟化平台集成,可以在虚拟机中提供更好的性能和功能。以下是一些 open-vm-tools 提供的功能: 1. 虚拟机增强功能: open-vm-tools 提供了与 VMware 虚…...
CKEditor编辑器的简单使用方法,取值,赋值
先从官网下载包。CKEditor 4 - Download Latest Version. 一:在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二:在表…...
创建一个线程对象需要花费多少内存空间
创建一个std::thread对象所需的内存空间大小并不是固定的,因为它取决于多种因素,包括C运行时库的实现、编译器优化、以及可能的平台和架构差异。 std::thread对象本身是一个轻量级的控制块,它主要用于管理线程的执行,包括保存线程…...

Java -- (part23)
一.网络编程 1.概述 在网络通信协议下,不同计算机上运行的程序,进行数据传输 2.软件架构 CS架构:客户端和服务端 BS架构:浏览器和服务端 3.服务器概念 安装了服务器软件的计算机 4.通信三要素 IP地址 a.概述 计算机的唯一标识,用于两台计算机之间的链接 b.特殊的IP…...

1. C++入门:命名空间及输入输出
C相比C的变化 兼容C面向对象泛型C的不足的弥补 为什么要有命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...