软件加密解密CPU信息读取

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Management;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 加密
{
    public partial class Form1 : Form
    {
        #region
        //获取硬盘号
        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
            {

            }
            return "";
        }

        //加密, 设置一个默认的加密密钥
        public static string Encrypt(string content, string secret = "Opew1et4")
        {
            StringBuilder ret = new StringBuilder();
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(content);

                des.Key = ASCIIEncoding.ASCII.GetBytes(secret);
                des.IV = ASCIIEncoding.ASCII.GetBytes(secret);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();

                foreach (byte b in ms.ToArray())
                {
                    ret.AppendFormat("{0:X2}", b);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ret.ToString();
        }
        //解密
        public static string Decrypt(string content, string secret = "Opew1et4")
        {
            MemoryStream ms = new MemoryStream();
            if (content != null)
            {
                try
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    byte[] inputByteArray = new byte[content.Length / 2];
                    for (int x = 0; x < content.Length / 2; x++)
                    {
                        int i = (Convert.ToInt32(content.Substring(x * 2, 2), 16));
                        inputByteArray[x] = (byte)i;
                    }
                    des.Key = ASCIIEncoding.ASCII.GetBytes(secret);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(secret);
                    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            return Encoding.Default.GetString(ms.ToArray());
        }

        #endregion
        string cpu_info, Hd_info, Encrypt_info,Decrypt_info;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            cpu_info = GetCpuInfo();
            MessageBox.Show($"{cpu_info}");
            Encrypt(cpu_info);
        }


        private void button2_Click(object sender, EventArgs e)
        {
            Hd_info = GetDiskID();
            MessageBox.Show($"{Hd_info}");
        }
        private void button3_Click(object sender, EventArgs e)
        {
            Encrypt_info = Encrypt(cpu_info,"Opew1et4");
            MessageBox.Show(Encrypt_info);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Decrypt_info = Decrypt(Encrypt_info,"Opew1et4");
            if (Decrypt_info == cpu_info)
            {
                MessageBox.Show("Encrypt_info == cpu_info");
            }
        }

    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是基于硬盘号和CPU序列号的软件加密技术的VB.NET代码示例: ``` Imports System.Management Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim cpuInfo As String = String.Empty Dim hddInfo As String = String.Empty '获取CPU序列号 cpuInfo = GetCpuID() '获取硬盘号 hddInfo = GetHddID() '将CPU序列号和硬盘号组合成加密串 Dim encryptString As String = cpuInfo & hddInfo '对加密串进行加密 Dim encryptedString As String = EncryptString(encryptString) '将加密串保存到文件中 IO.File.WriteAllText("encrypt.txt", encryptedString) '读取加密串 Dim readString As String = IO.File.ReadAllText("encrypt.txt") '解密加密串 Dim decryptedString As String = DecryptString(readString) '将解密串分解为CPU序列号和硬盘号 Dim cpu As String = decryptedString.Substring(0, 20) Dim hdd As String = decryptedString.Substring(20) '输出CPU序列号和硬盘号 MessageBox.Show("CPU序列号: " & cpu & vbCrLf & "硬盘号: " & hdd) End Sub '获取CPU序列号 Public Function GetCpuID() As String Dim cpuInfo As String = String.Empty Dim mc As ManagementClass = New ManagementClass("Win32_Processor") Dim moc As ManagementObjectCollection = mc.GetInstances() For Each mo As ManagementObject In moc If cpuInfo = String.Empty Then cpuInfo = mo.Properties("ProcessorId").Value.ToString() End If mo.Dispose() Next Return cpuInfo End Function '获取硬盘号 Public Function GetHddID() As String Dim hddInfo As String = String.Empty Dim mc As ManagementClass = New ManagementClass("Win32_DiskDrive") Dim moc As ManagementObjectCollection = mc.GetInstances() For Each mo As ManagementObject In moc If hddInfo = String.Empty Then hddInfo = mo.Properties("Model").Value.ToString() End If mo.Dispose() Next Return hddInfo End Function '加密字符串 Public Function EncryptString(ByVal str As String) As String Dim key As String = "myKey123" Dim data As Byte() = System.Text.Encoding.Unicode.GetBytes(str) Dim result As Byte() = Nothing Using aes As New System.Security.Cryptography.AesCryptoServiceProvider() aes.Key = System.Text.Encoding.Unicode.GetBytes(key) aes.IV = New Byte(15) {} Dim encryptor As System.Security.Cryptography.ICryptoTransform = aes.CreateEncryptor() result = encryptor.TransformFinalBlock(data, 0, data.Length) End Using Return Convert.ToBase64String(result) End Function '解密字符串 Public Function DecryptString(ByVal str As String) As String Dim key As String = "myKey123" Dim data As Byte() = Convert.FromBase64String(str) Dim result As Byte() = Nothing Using aes As New System.Security.Cryptography.AesCryptoServiceProvider() aes.Key = System.Text.Encoding.Unicode.GetBytes(key) aes.IV = New Byte(15) {} Dim decryptor As System.Security.Cryptography.ICryptoTransform = aes.CreateDecryptor() result = decryptor.TransformFinalBlock(data, 0, data.Length) End Using Return System.Text.Encoding.Unicode.GetString(result) End Function End Class ``` 上述代码中,`GetCpuID`函数用于获取CPU序列号,`GetHddID`函数用于获取硬盘号,`EncryptString`函数用于加密字符串,`DecryptString`函数用于解密字符串。在`Form1_Load`事件中,将获取到的CPU序列号和硬盘号组合成加密串,对加密串进行加密并保存到文件中,然后读取加密串并解密,最后输出CPU序列号和硬盘号。您可以根据需要修改代码以满足您的具体需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金增辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值