精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>经典加密算法>>利用磁盘的序列号进行软件加密“2”

主题:利用磁盘的序列号进行软件加密“2”
发信人: gzanew(纯粹混吉!)
整理人: gzwsh(2001-05-12 23:05:22), 站内信件
下面,我们就可以利用返回的磁盘序列号进行加密,需要用到一些数学知识。在这里我用了俄罗斯密码表的加密算法对进行了数学变换的序列号进行加密。下面是注册码验证部分的代码: 

Public Function IsValidate(ByVal SRC As Long, ByVal Value As String) As Boolean 
 Dim SourceString As String 
 Dim NewSRC As Long 
 For i = 0 To 30 
 If (SRC And 2 ^ i) = 2 ^ i Then 
 SourceString = SourceString + "1" 
 Else 
 SourceString = SourceString + "0" 
 End If 
 Next i 
 If SRC < 0 Then
SourceString = SourceString + "1"
Else
SourceString = SourceString + "0"
End If

Dim Table As String
Dim TableIndex As Integer
'================================================================================
'这是密码表,根据你的要求换成别的,不过长度要一致
'================================================================================
'注意:这里的密码表变动后,对应的注册号生成器的密码表也要完全一致才能生成正确的注册号
Table = "JSDJFKLUWRUOISDH;KSADJKLWQ;ABCDEFHIHL;KLADSHKJAGFWIHERQOWRLQH"
'================================================================================
Dim Result As String
Dim MidWord As String
Dim MidWordValue As Byte
Dim ResultValue As Byte
For t = 1 To 1
For i = 1 To Len(SourceString)
MidWord = Mid(SourceString, i, 1)
MidWordValue = Asc(MidWord)
TableIndex = TableIndex + 1
If TableIndex > Len(Table) Then TableIndex = 1 
 ResultValue = Asc(Mid(Table, TableIndex, 1)) Mod MidWordValue 
 Result = Result + Hex(ResultValue) 
 Next i 
 SourceString = Result 
 Next t 
 Dim BitTORool As Integer 
 For t = 1 To Len(CStr(SRC)) 
 BitTORool = SRC And 2 ^ t 
 For i = 1 To BitTORool 
 SourceString = Right(SourceString, 1) _ 
 + Left(SourceString, Len(SourceString) - 1) 
 Next i 
 Next t 
 If SourceString = Value Then IsValidate = True 
End Function 

     
由于代码较长,还有一些部分的代码在此省略,您可以去我的网站(http://vbtechnology.yeah.net)下载源程序研究一下。 

  最后,我们就可以利用这些子程序进行加密了。 



----
 

[关闭][返回]