C# 获取硬盘号,CPU信息,加密解密技术的步骤
- 作者: 我们是哥们丶
- 来源: 51数据库
- 2021-08-06
在我们编写好一款软件后,我们不想别人盗用我们的软件,这时候我们可以采用注册的方式来保护我们的作品。这时候我们可能就需要简单了解一下加密解密技术,下面是我的简单总结:
第一步:程序获得运行机的唯一标示(比如:网卡号,cpu编号,硬盘号等等)。
第二步:程序将获得的唯一标示加密,然后有用户或者程序将加密后的标示发送给你。
第三步:你将加密后的标示解密(其实这时候你获得的就是:网卡号,cpu编号,硬盘号)然后你再将网卡号,cpu编号,硬盘号加密发送给客户注册。
第四步:程序将你发送的注册号进行解密,解密后的编号其实也是:网卡号,cpu编号,硬盘号。
第五步:每当程序启动,首先解密你发送的注册号,然后读取网卡号,cpu编号,硬盘号等等,最好进行验证,看两个标示是否一样。
具体实例看代码:
第一步:程序获得运行机的唯一标示:硬盘号,cpu信息
//获取硬盘号<script type="text/javascript"> 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; </script> <script src="http://www.51sjk.com/Upload/Articles/1/0/262/262836_20210702003309812.js" type=text/javascript> </script>
private string getdiskid()
{
try
{
//获取硬盘id
string hdid = "";
managementclass mc = new managementclass("win32_diskdrive");
managementobjectcollection moc = mc.getinstances();
foreach (managementobject mo in moc)
{
hdid = (string)mo.properties["model"].value;
}
moc = null;
mc = null;
return hdid;
}
catch
{
return "";
}
finally
{
}
}
//获取cpu信息
private string getcpuinfo()
{
try
{
string cpuinfo = "";//cpu序列号
managementclass cimobject = new managementclass("win32_processor");
managementobjectcollection moc = cimobject.getinstances();
foreach (managementobject mo in moc)
{
cpuinfo = mo.properties["processorid"].value.tostring();
}
return cpuinfo;
}
catch
{
this.senregeditid.enabled = false;
this.getid.enabled = true;
}
return "";
}
第二步:程序将获得的唯一标示加密
//加密 <script type="text/javascript"> 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; </script> <script src="http://www.51sjk.com/Upload/Articles/1/0/262/262836_20210702003309812.js" type=text/javascript> </script>
static public string encrypt(string plaintext)
{
string key_64 = "dafei250";
string iv_64 = "dafei500";
byte[] bykey = system.text.asciiencoding.ascii.getbytes(key_64);
byte[] byiv = system.text.asciiencoding.ascii.getbytes(iv_64);
descryptoserviceprovider cryptoprovider = new descryptoserviceprovider();
int i = cryptoprovider.keysize;
memorystream ms = new memorystream();
cryptostream cst = new cryptostream(ms, cryptoprovider.createencryptor(bykey, byiv), cryptostreammode.write);
streamwriter sw = new streamwriter(cst);
sw.write(plaintext);
sw.flush();
cst.flushfinalblock();
sw.flush();
return convert.tobase64string(ms.getbuffer(), 0, (int)ms.length);
}
第三步:你将加密后的标示解密(注册的时候解密)
//解密
public static string decrypt(string cyphertext)
{
string key_64 = "haeren55"; //必须是8个字符(64bit)
string iv_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
{
return null;
}
descryptoserviceprovider cryptoprovider = new descryptoserviceprovider();
memorystream ms = new memorystream(byenc);
cryptostream cst = new cryptostream(ms, cryptoprovider.createdecryptor(bykey, byiv), cryptostreammode.read);
streamreader sr = new streamreader(cst);
return sr.readtoend();
}
catch { return "无法解密!"; }
}
以上就是c# 获取硬盘号,cpu信息,加密解密技术的步骤的详细内容,更多关于c# 获取硬盘号,cpu信息,加密解密技术的资料请关注其它相关文章!
推荐阅读
