C# 生成软件注册码
C# 生成软件注册码
今天早上,花了一个早上弄了个生成机器码和注册码的Demo,通过生成的注册码里面包含时间信息,保证了注册码在使用后的指定时间后失效
由于数学不行所以写的比较简单,ok 上代码吧
- 产生机器码的原理很简单,基本上都是取设备信息之后加密
/// <summary>/// 取本机机器码/// </summary>public static string GetMachineCode(){//CPU信息string cpuId = DeviceHelper.GetCpuID();//磁盘信息string diskId = DeviceHelper.GetDiskID();//网卡信息string MacAddress = DeviceHelper.GetMacAddress();string m1 = GetMD5(cpuId + typeof(string).ToString());string m2 = GetMD5(diskId + typeof(int).ToString());string m3 = GetMD5(MacAddress+typeof(double).ToString());string code1 = GetNum(m1, 8);string code2 = GetNum(m2, 8);string code3 = GetNum(m3, 8);return code1 + code2 + code3;}
- 产生注册码
/// <summary>/// 根据机器码产生注册码/// </summary>/// <param name="machineCode">机器码</param>/// <param name="overTime">到期时间</param>/// <returns></returns>public static string CreateRegisterCode(string machineCode,DateTime overTime){int year = int.Parse(overTime.Year.ToString().Substring(2))+33;int month = overTime.Month+21;int day = overTime.Day+54;int section = machineCode.Length / 4;string reg = "";int n = 1597;for (int i = 0; i < section; i++){int sec = int.Parse(machineCode.Substring(i*4,4));int resu = sec + n;if (resu >= 10000){resu = sec - 1597;}reg += resu ;n = n + 1597;}//插入年月日信息reg = InsertNum(reg, year, 0, 8, 4, 6, 7, 1, 3, 2, 5, 9);reg = InsertNum(reg, month, 0, 6, 9, 7, 3, 8, 4, 1, 2, 5);reg = InsertNum(reg, day, 0,1, 2, 5, 6,7, 3, 8, 9, 4);return reg.ToString();}/// <summary>/// 在指定数字后面插入内容/// </summary>/// <param name="str"></param>/// <param name="num"></param>/// <param name="index"></param>/// <param name="pmc"></param>/// <returns></returns>static string InsertNum(string str,int num,int index,params int[] pmc){int posi = str.IndexOf(pmc[index].ToString());if (posi <= -1)return InsertNum(str, num, index + 1, pmc);return str.Insert(posi, num.ToString());}
- 验证注册码
/// <summary>/// 检查注册码/// </summary>/// <param name="registerCode"></param>/// <param name="overTime"></param>/// <returns></returns>public static bool CheckRegister( string registerCode,ref DateTime overTime){try{string machineCode = GetMachineCode();//提取年月日int day = int.Parse(ExtractNum(ref registerCode, 0, 1, 2, 5, 6, 7, 3, 8, 9, 4));int month = int.Parse(ExtractNum(ref registerCode, 0, 6, 9, 7, 3, 8, 4, 1, 2, 5));int year = int.Parse(ExtractNum(ref registerCode, 0, 8, 4, 6, 7, 1, 3, 2, 5, 9));day -= 54;month -= 21;year -= 33;overTime = new DateTime(year, month, day);//核对注册码int section = machineCode.Length / 4;int n = 1597;string reg = "";for (int i = 0; i < section; i++){int sec = int.Parse(machineCode.Substring(i * 4, 4));int resu = sec + n;if (resu >= 10000){resu = sec - 1597;}reg += resu;n = n + 1597;}return registerCode == reg;}catch {return false;}}/// <summary>/// 提取数字/// </summary>/// <param name="str"></param>/// <param name="index"></param>/// <param name="pmc"></param>/// <returns></returns>static string ExtractNum(ref string str, int index, params int[] pmc){int posi = str.IndexOf(pmc[index].ToString());if (posi <= -1)return ExtractNum(ref str, index + 1, pmc);string resu = str.Substring(posi - 2, 2);str = str.Remove(posi - 2, 2);return resu;}
- 调用实例
//取机器码string mCode = RegInfo.GetMachineCode();//产生注册码string regCode = RegInfo.CreateRegisterCode(mCode, DateTime.Now);DateTime time = DateTime.Now;//验证注册码bool resu = RegInfo.CheckRegister(regCode+"1", ref time);
代码下载
链接:http://pan.baidu.com/s/1bpfFu3d 密码:lth3
C# 生成软件注册码相关推荐
- 基于RSA算法实现软件注册码原理初讨
https://blog.csdn.net/larryliuqing/article/details/7457200 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗 ...
- 蛙蛙推荐:蛙蛙牌软件注册码算法
蛙蛙推荐:蛙蛙牌软件注册码算法 摘要:辛辛苦苦写个共享软件,又怕被人破解,所以就会想到用注册码的方式来激活软件.本蛙给大家一个简单的思路来实现软件注册码算法,当然.net做的东西很容易被人破解,反编译 ...
- 批量生成6位数字_分享一款可做各种流水号的条码生成软件
对于刚接触条码生成软件的新用户,在条码生成软件中设计可变数据条码或者流水条码时,可能会有一点困难,如果一个一个的设计条码,不仅费时费力,还容易出错.特别是需要设计一些跳号的流水条码时,更是难上加难.其 ...
- 花了一年时间开发出来的基于DXF文件的加工路径自动生成软件
随着科技水平的进步,计算机辅助制造技术CAD/CAM在机械加工中起着越来越重要得作用 ,传统的手动编程正在被自动编程所取代,目前PRO/E,UG,MasterCAM等商业软件可以根据设计 的图形直接生 ...
- excel怎么设置一个按钮就一点就生成一个表_条码生成软件如何批量生成DPD条码...
之前有介绍过关于DPD条码的编码方式,校验算法,制作方法等等信息,今天主要给大家介绍一下如何用条码生成软件批量生成DPD条码.以Excel表为例,批量导入Excel表数据批量生成DPD条码. 1.数据 ...
- ai怎么生成条形码_中琅条码生成软件如何制作SCC-14条码
SCC-14不是一种标准的条码类型,没有正式的条码码制,SCC-14的全称是Shipping Container Code,即集装箱运输代码,其编码长度为14位.SCC-14本身就是ITF-14条码或 ...
- 网页一键生成app软件_施工方案不会写?4个工程人必备的自动生成软件,一键生成超便利!...
对于工程人来说,施工方案和技术交底的编制是基本功,但对于新人来说,编制和整理起来还是有一定难度的. 今天整理了工程人必备的自动生成软件,可以自动生成技术交底.施工方案.施工横道图和施工图等,安装快速, ...
- NSG2-一个很好用的ns2的tcl脚本自动生成软件
NSG2-一个很好用的ns2的tcl脚本自动生成软件 来源:Linux社区 作者:fzxy002763 NSG2-一个很好用的ns2的tcl脚本自动生成软件,NSG2.rar,一个很好的java写的t ...
- 二维码生成软件如何生成汉信码
汉信码是我国自主研发,拥有独立知识产权的新型二维条码,汉信码可以表示多媒体,声音,图形,汉字,字母,数字等一切可以二进制化的信息,信息容量大:数字可支持 7829个数字,英文字符可支持4350个英文字 ...
最新文章
- Subsonic 基本使用
- zookeeper适用场景:zookeeper解决了哪些问题
- 解决人际矛盾的英语口语10条
- SAP Marketing Cloud的动态dynamic customer profile
- 【模式识别】Fisher线性判别实验报告之MATLAB仿真
- Flash位图锯齿的处理办法
- UIButton 详解
- dwz ajax session超时跳转登录页(struts2自定义阻碍器)
- 最近一段时间的手工作品
- Delphi曾是一代王者,2020年Delphi强化WEB开发、拥抱开源、支持开发者社区,升级Delphi语言整合Python恢复昔日的跨平台开发工具王者地位
- icem网格数和节点数_ansys中划分网格后,如何查看单元数和节点数
- C++第四章4.7综合实例----个人银行账户管理程序
- DongDong认亲戚 并查集+STL
- 科学解释超级计算机,人工智能、现代科学证明:宇宙是虚拟的,真实世界是超级计算机...
- 从谷歌搜获更多~[一些谷歌搜索的提示和技巧]
- win10修改和隐藏系统输入法指示器
- JDBC+java+swing实现学生信息管理系统
- Amazon 4.7 星评,领域新经典,了解服务设计就读它
- 组织行为学对项目管理的意义
- 有哪些常见的游戏建模软件?游戏建模师的工作日常
热门文章
- 【MySQL基础】简单的分组条件查询练习
- 华为云部署 springboot
- scrapy抓取盗墓笔记小说
- 测试模型 V模型 W模型(双V模型) H模型 优缺点解析
- ‘xx.dll’should be excluded because its source file ‘...’is under Windows System File Protection.
- UML建模——图书管理系统(各种图)
- 关于饭店手续一次性消毒餐具问题的看法
- android广告页白屏_Android 启动页白屏解决方案
- Asp.net Core3.0-------------------数据仓储的封装和使用。
- ANSIBLE GALAXY