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);//获取硬件ID
            ViKeyInterface.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>

@漏刻有时

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软测学习笔记】Python入门Day02

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ python安装 1、进入Python的官方下载页面&#xff1a; Download Python | Py…

Java+SpringBoot+JSP实现在线心理评测与咨询系统

前言介绍 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理&#xff0c;交易等&#xff0c;而且过程简单、快捷。同样的&#xff0c;在人们的工作生活中&#xff0c;也就…

用PowerPoint创建毛笔字书写动画

先看看下面这个毛笔字书写动画&#xff1a; 这个动画是用PowerPoint创建的。下面介绍创建过程。 1、在任何一款矢量图片编辑软件中创建一个图片&#xff0c;用文字工具输入文字内容。我用的是InkScape。排好版后将图片保存为.svg格式的矢量图片文件。 2、打开PowerPoint&…

RTT潘多拉开发板上实现电源管理

简介 随着物联网(IoT)的兴起&#xff0c;产品对功耗的需求越来越强烈。作为数据采集的传感器节点通常需要在电池供电时长期工作&#xff0c;而作为联网的SOC也需要有快速的响应功能和较低的功耗。 在产品开发的起始阶段&#xff0c;首先考虑是尽快完成产品的功能开发。在产品…

C++变量的作用域与存储类型

一 变量的作用域和存储类型 1 变量的作用域(Scope) 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(Local Variable)和全局变量(Global Variable) 1&#xff09;局部变量(Local Variable) 在语句块内定义的变量 形参也是局部变量 特点&#xff1a; 生存期是…

web 基础之 HTTP 请求

web 基础 网上冲浪 就是在互联网(internet)上获取各种信息&#xff0c;进行工作&#xff0c;或者娱乐&#xff0c;他的英文表示surfing the Internet&#xff0c;因 “surfing”d的意思是冲浪&#xff0c;即成为网上冲浪&#xff0c;这是一种形象说法&#xff0c; 也是一个非…

交易复盘-20240507

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 蔚蓝生物 (5)|[9:25]|[36187万]|4.86 百合花…

SpringBootWeb入门

SpringBoot可以帮助我们快速的构建应用程序、简化开发、提高效率 创建SpringBoot工程&#xff0c;并勾选web开发相关依赖 定义HelloController类&#xff0c;添加方法&#xff0c;并添加注解 运行测试 创建SpringBoot工程(联网下载) 在File里面点击new Module 点击next 修…

Linux\_c输出

第一条Linux_c输出 初界面 : ls # 显示目录下的文件cd # 进入到某个目录 # 比如 我进入了Codels # 发现没有显示, 说明为文件下为空vim cpucdoe.c # 创建一个 .c的源码文件进入到了vim的编辑界面: i # 按i 就可以进行编辑 , 下面显示插入标识在编辑模式下, 可以通…

计算图:深度学习中的链式求导与反向传播引擎

在深度学习的世界中&#xff0c;计算图扮演着至关重要的角色。它不仅是数学计算的图形化表示&#xff0c;更是链式求导与反向传播算法的核心。本文将深入探讨计算图的基本概念、与链式求导的紧密关系及其在反向传播中的应用&#xff0c;旨在为读者提供一个全面而深入的理解。 计…

练习项目后端代码解析切面篇(Aspect)

前言 之前注解篇时我说&#xff0c;通常情况下一个自定义注解一般对应一个切面&#xff0c;虽然项目里的切面和注解个数相同&#xff0c;但是好像有一个名字看起来并不对应&#xff0c;无所谓&#xff0c;先看了再说。 ExceptionLogAspect切面 我在里面做了具体注释&#x…

使用Simulink Test进行单元测试

本文摘要&#xff1a;主要介绍如何利用Simulink Test工具箱&#xff0c;对模型进行单元测试。内容包括&#xff0c;如何创建Test Harness模型&#xff0c;如何自动生成excel格式的测试用例模板来创建测试用例&#xff0c;如何手动填写excel格式的测试用例模板来手动创建测试用例…

Golang Map类型

文章目录 Map介绍Map的定义方式Map的增删查改新增和修改Map元素查找Map元素删除Map元素遍历Map元素 Map元素排序Map切片 Map介绍 Map介绍 在Go中&#xff0c;map是哈希表的引用&#xff0c;是一种key-value数据结构。map类型写作map[K]V&#xff0c;其中K和V分别对应key和value…

系统维护启动盘 优启吧

优启吧-《优启时代系统维护盘》2025典藏版&#xff08;UD/ISO&#xff09;

亿发解密:数据中台管理系统,引领企业数字化转型的智能数据体系

在当今数字化时代&#xff0c;数据已成为企业发展的关键驱动力。为了更好地利用数据&#xff0c;提升业务水平&#xff0c;企业需要建立一套完备的数据管理体系&#xff0c;而数据中台便应运而生。 什么是数据中台 数据中台是集方法论、组织和工具于一体的智能大数据体系。它…

一起深度学习(AlexNet网络)

AlexNet神经网络 代码实现&#xff1a; 代码实现&#xff1a; import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 采用了11*11的卷积核来捕捉对象&#xff0c;因为原始输入数据比较大#步幅为4 &#xff0c;可减少输出的高度核宽度。#输出通…

微搭低代码入门06分页查询

目录 1 创建自定义代码2 编写分页代码3 创建页面4 创建变量5 配置数据列表总结 我们在数据模型章节介绍了微搭后端服务编写的三种方式&#xff0c;包括Http请求、自定义代码、云函数。本篇我们详细讲解一下利用自定义代码开发分页查询的功能。 1 创建自定义代码 打开控制台&am…

Adaboost (BiLSTM-Adaboost ELM-Adaboost RF--Adaboost RVM-Adaboost SVM-Adaboost)

Adaboost Adaboost&#xff08;多输入单输出matlab&#xff09;代码获取戳此处代码获取戳此处 Adaboost是一种迭代式集成学习算法&#xff0c;全称为“Adaptive Boosting”&#xff0c;即自适应增强。该算法的核心思想是针对同一个训练集训练不同的分类器&#xff08;弱分类器&…

win10禁止自动更新的终极方法

添加注册表值 1.运行&#xff0c;输入regedit 2.打开注册表编辑器依次进入以下路径“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”。 3.在Settings项中&#xff0c;新建DWORD&#xff08;32位&#xff09;值(D)&#xff0c;重命名为以下命名“Fl…

《ESP8266通信指南》12-Lua 固件烧录

往期 《ESP8266通信指南》11-Lua开发环境配置-CSDN博客 《ESP8266通信指南》10-MQTT通信&#xff08;Arduino开发&#xff09;-CSDN博客 《ESP8266通信指南》9-TCP通信&#xff08;Arudino开发&#xff09;-CSDN博客 《ESP8266通信指南》8-连接WIFI&#xff08;Arduino开发…