如果是winform的话通常我们的加密手段是先读取硬件信息,然后再对这个信息进行二期处理,最后再MD5码加密码,这里面自己要决定一套算法。打个比方吧,你现在读入的串是38000054568,然后我将这些串增加多少个字符位,然后再将处理过的MD5码进行加密,MD5是不可逆的,所以基本上不用担心被别人逆推,然后你自己再用相同的算法写一个算号器,以后每一台机子只需要给他相对应的序列码就可以了,注册完以后你可以将这个串号保存在文件中也可以写在注册表中。每次启动的时候就先查找这个序列,如果存在的话就不提求注册,否则就提求注册,这个比较容易实现了。当然……这种加密方式只需要用OD跑一下估计就可以暴破了。
没有最好的加密方法,只有最合适的加密方法,以上只是一个比较简单的方案,更具体的你就需要自己思考了,如果你的软件比较具有商业价值的话,你还可以通过远程验证的方式进行验证,这样更好一些。如果不通过远程的话也可以采用写入N个注册表的方法……虽然这个方法很烂,可是防盗版却很有效,我们这里有一台电脑用的就是这种方式,我们确确实实是没办法把他写入注册表里的东西全找出来……现在对这个软件的作者深恶痛绝。
下面附一段代码:
using System.Management;
// 获取MAC地址
public string GetNetCardMacAddress()
{
ManagementClass mc;
ManagementObjectCollection moc;
mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
moc = mc.GetInstances();
string str = "";
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
str = mo["MacAddress"].ToString();
}
return str;
}
// C盘序列号
public string GetDiskVolumeSerialNumber()
{
ManagementObject disk;
disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}
好了,后面的就要靠你自己研究了……
[[it] 本帖最后由 pacocai 于 2008-3-6 17:59 编辑 [/it]]