Dragon  
Dragon
日历
<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

一个数据库系统的注册原理:
    在讨论这前先来了解一下异或运算的性质:
    若c=a^b;
    则a=c^b;b=a^c;

基本思路如下:
(1)int(用户C盘序列号^用户名^1234567890123)生成一个序列号N(是字符串CString类型);
(2)系统检测到你的软件还没注册就自动生成一个文件,文件保存了你输入的用户名和序列号     N.公司会叫你EMail这个文件到他们公司邮箱,公司再返回一个注册码的!
(3)如果发回一个注册码,系统会判断 用户名^用户C盘序列号 =注册码?来进入系统的!注册成   功后再把用户名和注册码保存到系统文件(ini)中下次登陆就会检测这个文件,这次是判断    用户名^注册码=用户C盘序列号? 来判断进入系统了!

 

推理:
从上得到三条有用信息:
(1)用户名对于用户和公司来说都是已知的
(2)int(用户C盘序列号^1234567890123)=N(经过Format变成字符串)
(3)用户名^用户C盘序列号=注册码

从(1)和上面的异或性质推出:  atoi(N)^1234567890123=用户C盘序列号          (3)
从(2)和异或性质推出:  注册码=用户C盘序列号^用户名                                      (4)

从(3),(4)式再推出
注册码=atoi(N)^1234567890123^用户名
用户名和序列号N都发给了公司,公司就是利用这条公司进行求注册码!

理解了这个思路后我就写了个生成注册码的程序:
    就是逆运算吧了!假如我是那公司,发到我手上的信息已经有两个了,用户名和序列号N;这样,主要我用atoi(序列号)^1234567890123就可以求得注册码了,只不过在做的时候就是类型转换有点复杂吧了!!

为了便于复习把代码贴出来:

 LPCTSTR lpRootPathName="C:\\";
 LPTSTR lpVolumeNameBuffer=new char[12];
 DWORD nVolumnNameSize=12;
 DWORD MaximumComponentLength;
 DWORD FileSystemFlags;
 LPTSTR lpFileSystemNameBuffer=new char[10];
 DWORD FileSystemNameLength=12;
 GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,nVolumnNameSize,&m_VolumnSerialNumber,&MaximumComponentLength,&FileSystemFlags,lpFileSystemNameBuffer,FileSystemNameLength);
 delete(lpVolumeNameBuffer);
 delete(lpFileSystemNameBuffer);

上面就是将C盘序列号放到DWORD类型的m_VolumnSerialNumber中!


sSerialNumber.Format("%d",m_VolumnSerialNumber^1234567890123);

生成的序列号就保存在sSerialNumber中!
int(用户C盘序列号^1234567890123)=N已经完成!


下面是 用户名^用户C盘序列号=注册码
CString sName,sNameCode,sCode; 
this->m_EdtUserName.GetWindowText(sName);
char * cNameCode=sName.GetBuffer(sName.GetLength());
DWORD dNameCode=*cNameCode;
sCode.Format("%d",m_VolumnSerialNumber^dNameCode);

sCode就保存了注册码!

 

 

 


 

posted on 2008-09-06 11:41 Dragon 阅读(1504) 评论(0)  编辑 收藏 引用 所属分类: VC

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客