随笔 - 317, 文章 - 0, 评论 - 453, 阅读 - 114万
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

赛孚耐(SafeNet)加密狗 C#调用代码

Posted on   PHP-张工  阅读(1896)  评论(0编辑  收藏  举报

赛孚耐(SafeNet)加密狗

购买链接:https://item.jd.com/21653904499.html

需求:

加密狗作用:如果未插入加密狗,则程序无法运行。
我们会给每个客户一个加密狗,希望通过加密狗编号自动对应客户。

加密狗制作流程:

1. 安装《超级加密狗工具包》,通过开发商向导安装函数库。
2. 插入加密狗driver和开发狗master
3. 使用《外壳加密工具》加密程序
4. 使用《授权管理工具》授权加密狗有效期

官方给的API调用文档,太复杂了,看得人晕头转向。整理下备忘。

复制代码
using SuperDog;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinFrmTest
{
    public partial class Form1 : Form
    {
        // C:\Program Files (x86)\Gemalto\SuperDog\2.5\VendorCodes\FFWWC.hvc
        const string vcode = "xxxx";

        public Form1()
        {
            InitializeComponent();
        }

        private void showInfo(string str)
        {
            textBox1.AppendText(str + System.Environment.NewLine);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DogStatus res = DogStatus.StatusOk;

            showInfo("获取加密狗信息");

            string a1 = ""+
            "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
            "<dogscope/>";

            string a2 = "" +
            "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
            "<dogformat root=\"dog_info\">" +
            "    <dog>" +
            "        <attribute name=\"id\" />" +
            "        <attribute name=\"type\" />" +
            "        <feature>" +
            "            <attribute name=\"id\" />" +
            "        </feature>" +
            "    </dog>" +
            "</dogformat>";

            string info = "";
            res = Dog.GetInfo(a1, a2, vcode, ref info);

            if (res != DogStatus.StatusOk)
            {
                showInfo("错误:" + res.ToString());
                return;
            }

            showInfo(info);

            using (var dog = new Dog(new DogFeature(DogFeature.FromFeature(0).Feature)))
            {
                showInfo("验证加密狗");
                res = dog.Login(vcode);
                if (res != DogStatus.StatusOk)
                {
                    showInfo("错误:" + res.ToString());
                }
                else
                {
                    showInfo("获取时间");
                    DateTime dt = new DateTime();
                    dog.GetTime(ref dt);
                    showInfo(dt.AddHours(8).ToString());
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
        }
    }
}
复制代码

 

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2012-01-06 瀑布布局
2011-01-06 新的一年
2011-01-06 多文件上传[Flash]
点击右上角即可分享
微信分享提示