.NET平台下基于webservice,通过获取硬件cpu序列号和随机字符串序列号实现软件加密的一种方法。

本文介绍了如何在.NET平台上利用Web Service结合CPU序列号实现软件加密,以防止软件在不同机器间非法转移。通过创建序列号和CPU物理编号对应关系的数据库,编写Web Service接口函数验证序列号和CPU编号,客户端调用接口进行验证。在网络不稳定时,通过注册表记录验证状态。虽然CPU序列号相对安全,但同一厂商批次可能相同,存在一定的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 目前的软件加密方法有很多,可以通过序列号来实现,但是只通过序列号来实现无法控制软件环境的改变,存在换个机子照样可以用的缺陷,而将序列号和物理结合起来使用可以控制用户只能在一台机器上使用。本文就是按照这样的思路实现的。原理图如下:

 

具体实现思路:

(1)首先创建保存序列号和cpu物理编号的数据库,建立序列号和cpu物理编号的对应关系表。

(2)编写Web Service 接口函数,接受两个字符串参数:strSerialNo和strCpuNo ,验证的原则是首先验证序列号,如果序列号匹配,则进一步比较cpu编号,如果是第一次验证,只要序列号匹配则认为验证通过,返回为true;如果不是第一次验证,则检验cpu编号,匹配则返回true,反之false;如果序列号不对,直接返回false;

(3)编写客户端验证函数,从配置文件中读取序列号,调用GetCpuSerialNo()获取cpu编号,然后调用web service方法进行验证。获取cpu物理编号主要是通过调用WMI接口函数来实现。

String ^CWebServiceData::GetCpuSerialNo()
 {
  String ^ strCpuNo;
  try
  {
   ManagementObjectSearcher ^mos = gcnew ManagementObjectSearcher("select *  from Win32_Processor");
   ManagementObjectCollection^  moc = mos->Get();
   i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值