vbnet 获取计算机硬盘和CPU的序列号取硬盘序列号最后4位和CPU序列号前8位计算MD5值采用XTEA算法密钥为053AA8D33E0C98CB792EE1AC1FD71D72明文为计算的MD5值计算密文
以下是使用VB.NET获取计算机硬盘和CPU序列号,并使用XTEA算法进行加密的代码示例:
Imports System.Management
Imports System.Security.Cryptography
Imports System.Text
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim hddSerial As String = GetHddSerialNumber().Substring(GetHddSerialNumber().Length - 4)
Dim cpuSerial As String = GetCpuSerialNumber().Substring(0, 8)
Dim md5Hash As String = CalculateMD5(hddSerial & cpuSerial)
Dim encryptedText As String = EncryptXTEA(md5Hash, "053AA8D33E0C98CB792EE1AC1FD71D72")
MessageBox.Show("Encrypted Text: " & encryptedText)
End Sub
Private Function GetHddSerialNumber() As String
Dim searcher As New ManagementObjectSearcher("SELECT SerialNumber FROM Win32_PhysicalMedia")
Dim hddSerial As String = ""
For Each obj As ManagementObject In searcher.Get()
If obj("SerialNumber") IsNot Nothing Then
hddSerial = obj("SerialNumber").ToString().Trim()
Exit For
End If
Next
Return hddSerial
End Function
Private Function GetCpuSerialNumber() As String
Dim searcher As New ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor")
Dim cpuSerial As String = ""
For Each obj As ManagementObject In searcher.Get()
If obj("ProcessorId") IsNot Nothing Then
cpuSerial = obj("ProcessorId").ToString().Trim()
Exit For
End If
Next
Return cpuSerial
End Function
Private Function CalculateMD5(input As String) As String
Dim md5Hash As New MD5CryptoServiceProvider()
Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input))
Dim stringBuilder As New StringBuilder()
For i As Integer = 0 To data.Length - 1
stringBuilder.Append(data(i).ToString("x2"))
Next
Return stringBuilder.ToString()
End Function
Private Function EncryptXTEA(input As String, key As String) As String
Dim keyBytes As Byte() = Encoding.UTF8.GetBytes(key)
Dim inputBytes As Byte() = Encoding.UTF8.GetBytes(input)
Dim xtea As New XTEA(keyBytes)
Dim encryptedBytes As Byte() = xtea.Encrypt(inputBytes)
Return Convert.ToBase64String(encryptedBytes)
End Function
End Class
Public Class XTEA
Private Const Delta As UInt32 = &H9E3779B9
Private Const Rounds As Integer = 32
Private ReadOnly key As UInt32()
Public Sub New(keyBytes As Byte())
If keyBytes.Length <> 16 Then
Throw New ArgumentException("Key must be 16 bytes long.")
End If
key = New UInt32(3) {}
For i As Integer = 0 To 3
key(i) = BitConverter.ToUInt32(keyBytes, i * 4)
Next
End Sub
Public Function Encrypt(data As Byte()) As Byte()
Dim v0 As UInt32 = BitConverter.ToUInt32(data, 0)
Dim v1 As UInt32 = BitConverter.ToUInt32(data, 4)
Dim sum As UInt32 = 0
For i As Integer = 0 To Rounds - 1
v0 += ((v1 << 4 Xor v1 >> 5) + v1) Xor (sum + key(sum And 3))
sum = (sum + Delta) And &HFFFFFFFFUI
v1 += ((v0 << 4 Xor v0 >> 5) + v0) Xor (sum + key(sum >> 11 And 3))
Next
Dim result As Byte() = New Byte(7) {}
Array.Copy(BitConverter.GetBytes(v0), result, 4)
Array.Copy(BitConverter.GetBytes(v1), 0, result, 4, 4)
Return result
End Function
End Class
这段代码首先使用GetHddSerialNumber和GetCpuSerialNumber方法获取计算机的硬盘和CPU序列号。然后使用CalculateMD5方法计算硬盘序列号的最后4位和CPU序列号的前8位的MD5值。最后,使用EncryptXTEA方法对MD5值进行XTEA算法加密,密钥为053AA8D33E0C98CB792EE1AC1FD71D72。
请注意,为了运行此代码,您需要将System.Management和System.Security.Cryptography命名空间导入到您的项目中
原文地址: https://www.cveoy.top/t/topic/h1DI 著作权归作者所有。请勿转载和采集!