C# 获取硬盘号,CPU信息,加密解密技术的步骤
在我们编写好一款软件后,我们不想别人盗用我们的软件,这时候我们可以采用注册的方式来保护我们的作品。这时候我们可能就需要简单了解一下加密解密技术,下面是我的简单总结:
第一步:程序获得运行机的唯一标示(比如:网卡号,CPU编号,硬盘号等等)。
第二步:程序将获得的唯一标示加密,然后有用户或者程序将加密后的标示发送给你。
第三步:你将加密后的标示解密(其实这时候你获得的就是:网卡号,CPU编号,硬盘号)然后你再将网卡号,CPU编号,硬盘号加密发送给客户注册。
第四步:程序将你发送的注册号进行解密,解密后的编号其实也是:网卡号,CPU编号,硬盘号。
第五步:每当程序启动,首先解密你发送的注册号,然后读取网卡号,CPU编号,硬盘号等等,最好进行验证,看两个标示是否一样。
具体实例看代码:
第一步:程序获得运行机的唯一标示:硬盘号,CPU信息
//获取硬盘号alimama_pid="mm_10249644_1605763_5018464";alimama_type="f";alimama_sizecode="tl_1x1_8";alimama_fontsize=12;alimama_bordercolor="FFFFFF";alimama_bgcolor="FFFFFF";alimama_titlecolor="0000FF";alimama_underline=0;alimama_height=22;alimama_width=0; privatestringGetDiskID() { try { //获取硬盘ID StringHDid=""; ManagementClassmc=newManagementClass("Win32_DiskDrive"); ManagementObjectCollectionmoc=mc.GetInstances(); foreach(ManagementObjectmoinmoc) { HDid=(string)mo.Properties["Model"].Value; } moc=null; mc=null; returnHDid; } catch { return""; } finally { } } //获取CPU信息 privatestringGetCpuInfo() { try { stringcpuInfo="";//cpu序列号 ManagementClasscimobject=newManagementClass("Win32_Processor"); ManagementObjectCollectionmoc=cimobject.GetInstances(); foreach(ManagementObjectmoinmoc) { cpuInfo=mo.Properties["ProcessorId"].Value.ToString(); } returncpuInfo; } catch { this.senRegeditID.Enabled=false; this.GetId.Enabled=true; } return""; }
第二步:程序将获得的唯一标示加密
//加密alimama_pid="mm_10249644_1605763_5027492";alimama_type="f";alimama_sizecode="tl_1x5_8";alimama_fontsize=12;alimama_bordercolor="FFFFFF";alimama_bgcolor="FFFFFF";alimama_titlecolor="0000FF";alimama_underline=0;alimama_height=22;alimama_width=0; staticpublicstringEncrypt(stringPlainText) { stringKEY_64="dafei250"; stringIV_64="DAFEI500"; byte[]byKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[]byIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvidercryptoProvider=newDESCryptoServiceProvider(); inti=cryptoProvider.KeySize; MemoryStreamms=newMemoryStream(); CryptoStreamcst=newCryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write); StreamWritersw=newStreamWriter(cst); sw.Write(PlainText); sw.Flush(); cst.FlushFinalBlock(); sw.Flush(); returnConvert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length); }
第三步:你将加密后的标示解密(注册的时候解密)
//解密 publicstaticstringDecrypt(stringCypherText) { stringKEY_64="haeren55";//必须是8个字符(64Bit) stringIV_64="HAEREN55";//必须8个字符(64Bit) try { byte[]byKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[]byIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[]byEnc; try { byEnc=Convert.FromBase64String(CypherText); } catch { returnnull; } DESCryptoServiceProvidercryptoProvider=newDESCryptoServiceProvider(); MemoryStreamms=newMemoryStream(byEnc); CryptoStreamcst=newCryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read); StreamReadersr=newStreamReader(cst); returnsr.ReadToEnd(); } catch{return"无法解密!";} }
以上就是C#获取硬盘号,CPU信息,加密解密技术的步骤的详细内容,更多关于C#获取硬盘号,CPU信息,加密解密技术的资料请关注毛票票其它相关文章!