C#使用SafeNet的开发狗和超级狗加密使用方法
1.在安装光盘中选择Windows文件夹,单击Setup.exe执行安装程序,安装过程默认选择,单击下一步即可。
2.安装完毕后插入超级狗,在菜单栏中打开“超级狗开发商向导”,选择下载API,然后默认选择下一步,下载完成后会提示下载全部成功
,此时超级狗中需要导入的资源文件都已成功完成,并且在c盘指定安装路径下生成了新的hvc文件(VendorCodes文件夹中)、dog_windows_xxxxx.dll和
dog_windows_x64_xxxxx.dll文件(xxxxx为随机数字,Tools/makekeys文件夹中)
3.在程序中使用License API加密方法
(1)插入子狗(小U盘)
(2)找到api_dsp_windows.dll,api_dsp_windows_x64.dll,dog_net_windows.dll,dog_windows_3154506.dll(数字为开发号)
,dog_windows_x64_3154506.dll这5个库文件(前三个文件默认路径在C:\Program Files(x86)\Gemalto\SuperDog\2.1\API\Licensing\.net中),并复
制到需要加密程序的bin目录下,后两个文件在C:\Program Files(x86)\Gemalto\SuperDog\2.1\Tools\makekeys文件夹中
(3)打开需要加密的程序,引用dog_net_windows.dll文件。
(4)在路径为C:\Program Files(x86)\Gemalto\SuperDog\2.1\VendorCodes的hvc文件中获取供应商代码,放到程序中。
使用源码实例
string scope = "<dogscope />";
string strVendorCode="xxx";//VendorCodes的hvc文件中的字符串,每个开发狗更新时都会改变售号代码
DogStatus status;
DogFeature feature = DogFeature.Default;
Dog curDog = new Dog(feature);
status = curDog.Login(strVendorCode, scope);//只要终端的超级狗授权到期会提示非ok的其他状态
if (status != DogStatus.StatusOk)
{
if (status == DogStatus.InvalidVendorCode)
{
Console.WriteLine("Invalid vendor code.\n");
}
else if (status == DogStatus.UnknownVcode)
{
Console.WriteLine("Vendor Code not recognized by API.\n");
}
else
{
Console.WriteLine("Login to feature failed with status: " + status);
}
return status;
}
else
{
Console.WriteLine(status.ToString() +"登陆加密狗成功");
DateTime time = DateTime.Now;
status = curDog.GetTime(ref time);
GetInfoDemo();//获取加密类型
string info = null;
status = curDog.GetSessionInfo(Dog.KeyInfo,ref info);//获取节点信息
byte[] bufData = new byte[128];
status = curDog.Decrypt(bufData);
if (DogStatus.StatusOk != status)
{
Console.WriteLine("Dog decrypt failed with status: " + status);
curDog.Logout();
return status;
}
string strContents = UTF8Encoding.UTF8.GetString(bufData,0,15);
DogFile dogFile= curDog.GetFile();
dogFile.Read(ref strContents);
strContents = strContents.Substring(0,strContents.IndexOf("1857")+4);
int length = strContents.Length;
return status;
}
//获取超级狗节点信息
protected void GetInfoDemo()
{
string queryFormat = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
"<dogformat root=\"dog_info\">" +
" <feature>" +
" <attribute name=\"id\" />" +
" <element name=\"license\" />" +
" </feature>" +
"</dogformat>";
string info = null;
DogStatus status = Dog.GetInfo(scope, queryFormat, VendorCode.strVendorCode, ref info);
}
//只有插入开发狗,才能设计不同的自定义“超级狗许可文件.xml”,如果开发狗和超级狗都在一块,则同时插入pc中进行许可设计然后编程超级狗就可以。
//如果软件开发商只有开发狗,而客户手里有超级狗,则更新license的时候就需要:让客户安装超级狗组件,在组件的工具软件中选择远程升级工具,生成
超级狗的请求文件(.c2v);软件开发商拿到这个客户给的许可请求文件后插入开发狗,在超级狗设计许可工具中设计许可方式并生成许可升级文件(.v2c);
然后软件开发商将许可升级文件发送给客户,客户拿到许可升级文件在远程升级工具里导入升级即可。
//注意:每个超级狗生成许可请求文件再发给软件开发商生成许可升级文件后,客户只允许一次升级,之后文件就会失效,所以每次升级都要重新执行以上的操作
(请求文件重新生成)
//如果首次运行超级狗远程升级工具失败,则需要在“远程升级界面定制工具(默认的RUS.exe)”中重新生成一个RUS.exe,然后运行该.exe文件替代原有的.exe。
//代码编译完毕后无需更改,只要终端的超级狗授权到期会提示非ok的其他状态
相关文章
- CefSharp F12打开DevTools查看console js和c#方法互相调用
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- C# 2进制、8进制、10进制、16进制...各种进制间的转换(三) 数值运算和位运算 C# 2进制、8进制、10进制、16进制...各种进制间的转换(二)搜集的各种转换及方法 C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法 C#.NET 中的定时器及使用方法 依赖注入 加密 解密
- C# 6.0语法糖剖析
- 请求大神,C#如何截取字符串中指定字符之间的部分 按指定字符串分割 一分为二 c# 去除字符串中的某个已知字符
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- Word控件Spire.Doc 【图像形状】教程(3) :在 C#/VB.NET 中的指定位置插入图像
- Word控件Spire.Doc 【段落处理】教程(十一):如何在C#中隐藏单词段落
- C# 实现数组深拷贝的一种标准方法
- C#,码海拾贝(12)——拉格朗日(Lagrange)曲面插值算法,《C#数值计算算法编程》源代码升级改进版
- C#,精巧实用的代码,图片像素(Bitmap Pixel)的读取与绘制的快速方法与源程序
- C#中委托概念及使用方法详解
- c#中怎么截获按钮消息的几种方法实例验证
- C#中常用的几种读取XML文件的方法
- c#Process.Start无法启动exe程序的问题
- C# Lambda表达式Contains方法 like
- C#方法详解
- 《C#零基础入门之百识百例》(三十二)方法参数 -- 引用&输出参数 -- 两数交换
- 《C#零基础入门之百识百例》(三十六)方法重载 -- 回文数
- 《C#零基础入门之百识百例》(五十)嵌套类和嵌套方法 -- 汉诺塔游戏
- C# 基元线程同步构造
- C# 获取所有对象的字符串表示一ToString方法
- C#核编之X++详解
- C#自定义控件在添加引用后不显示在工具箱的解决方法
- c#队列的实现
- C# Panel 打开 Form 窗口的方法
- C#获取当前程序运行路径的方法集合
- c#Main()方法,java 是小写main