【API浏览器】原贴已不能回复,另开新贴继续

叶帆
博客专家认证
业界专家认证
2003-09-01 09:34:12
原贴:
http://expert.csdn.net/Expert/topic/1985/1985829.xml?temp=.1937372

谢谢朋友们,不断的支持。
dsclub(▁▂▃▄▅▆▇█ 騩鹬) 的建议挺好,我希望这个小程序大家一起维护,一起让它完美,当然是完全免费提供给大家

杨云鹏兄有网站空间,我想把源码和数据库放上去,希望一起开发的用户,可以在一个共同的空间研究探讨。(这几天出差,还没有和杨云鹏兄商量,我想他应该是同意的)。

希望大家提更好的建议。
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsclub 2003-09-03
  • 打赏
  • 举报
回复
UP
叶帆 2003-09-01
  • 打赏
  • 举报
回复
'*************************************************************************
'**函 数 名:KeyGen
'**输 入:kName - 用户信息
'** :kPass(String) - 生成密码
'** :kType(Integer) - 注册码类型:1-数字 2-字母和数字 3-十六进制
'**输 出:(String) - 注册码
'**功能描述:生成指定要求的注册码
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年07月19日
'**修 改 人:
'**日 期:
'**版 本:V1.0
'*************************************************************************
Function KeyGen(kName As String, kPass As String, kType As Integer) As String
On Error Resume Next 'still here just as a precaution

Dim cTable(512) As Integer 'character map
Dim nKeys(16) As Integer 'xor keys used for pArray(x) xor nkeys(x)
Dim s0(512) As Integer 'swap-box data used to map character table
Dim nArray(16) As Integer 'name array data
Dim pArray(16) As Integer 'password array data
Dim n As Integer 'for next loop counter
Dim nPtr As Integer 'name pointer (used for counting)
Dim cPtr As Integer 'character pointer (used for counting)
Dim cFlip As Boolean 'character flip (used to flip between numeric and alpha)
Dim sIni As Integer 'holds s-box values
Dim temp As Integer 'holds s-box values
Dim rtn As Integer 'holds generated key values used agains chr map
Dim gKey As String 'generated key as string
Dim nLen As Integer 'number of chr's in name
Dim pLen As Integer 'number of chr's in password
Dim kPtr As Integer 'key pointer
Dim sPtr As Integer 'space pointer (used in hex key)
Dim nOffset As Integer 'name offset
Dim pOffset As Integer 'password offset
Dim tOffset As Integer 'total offset
Dim KeySize As Integer 'the size of the key to make

Const nXor As Integer = 18 'name xor value
Const pXor As Integer = 25 'password xor value
Const cLw As Integer = 65 'character lower limit 65 = A ** do not change **
Const nLw As Integer = 48 'number lower limit 48 = 0 ** do not change **
Const sOffset As Integer = 0 'character map offset

nLen = Len(kName)
pLen = Len(kPass)

'password xor keys ** change to make keygen unique **
nKeys(1) = 46
nKeys(2) = 89
nKeys(3) = 142
nKeys(4) = 63
nKeys(5) = 231
nKeys(6) = 32
nKeys(7) = 129
nKeys(8) = 51
nKeys(9) = 28
nKeys(10) = 97
nKeys(11) = 248
nKeys(12) = 41
nKeys(13) = 136
nKeys(14) = 53
nKeys(15) = 78
nKeys(16) = 164

sIni = 0
'===============================================
'set s boxes
For n = 0 To 512: s0(n) = n: Next

For n = 0 To 512
sIni = (sOffset + sIni + n) Mod 256
temp = s0(n)
s0(n) = s0(sIni)
s0(sIni) = temp
Next n

'===============================================
Select Case kType

Case 1: '数字
'-----------------------------------
nPtr = 0
KeySize = 16
gKey = String(16, " ")

For n = 0 To 512
cTable(s0(n)) = (nLw + (nPtr))
nPtr = nPtr + 1
If nPtr = 10 Then nPtr = 0
Next
'-----------------------------------
Case 2: '数字和字母
'-----------------------------------
nPtr = 0
cPtr = 0
KeySize = 16
gKey = String(16, " ")
cFlip = False

For n = 0 To 512
If cFlip Then
cTable(s0(n)) = (nLw + nPtr)
nPtr = nPtr + 1
If nPtr = 10 Then nPtr = 0
cFlip = False
Else
cTable(s0(n)) = (cLw + cPtr)
cPtr = cPtr + 1
If cPtr = 26 Then cPtr = 0
cFlip = True
End If
Next
'-----------------------------------
Case 3: '十六进制
'-----------------------------------
KeySize = 8
gKey = String(19, " ")
'-----------------------------------
End Select


'===============================================
kPtr = 1

For n = 1 To nLen 'name
nArray(kPtr) = nArray(kPtr) + Asc(Mid(kName, n, 1)) Xor nXor
nOffset = nOffset + nArray(kPtr)
kPtr = kPtr + 1
If kPtr = 9 Then kPtr = 1
Next

For n = 1 To pLen 'password
pArray(kPtr) = pArray(kPtr) + Asc(Mid(kPass, n, 1)) Xor pXor
pOffset = pOffset + pArray(kPtr)
kPtr = kPtr + 1
If kPtr = 9 Then kPtr = 1
Next

'===============================================
tOffset = (nOffset + pOffset) Mod 512

kPtr = 1
sPtr = 1

For n = 1 To KeySize
pArray(n) = pArray(n) Xor nKeys(n)
rtn = Abs(((nArray(n) Xor pArray(n)) Mod 512) - tOffset)

If kType = 3 Then '十六进制
If rtn < 16 Then
Mid(gKey, kPtr, 2) = "0" & Hex(rtn)
Else
Mid(gKey, kPtr, 2) = Hex(rtn)
End If
If sPtr = 2 And kPtr < 18 Then
kPtr = kPtr + 1
Mid(gKey, kPtr + 1, 1) = "-"
End If
kPtr = kPtr + 2
sPtr = sPtr + 1
If sPtr = 3 Then sPtr = 1
Else '数字 - 数字和字母
Mid(gKey, n, 1) = Chr(cTable(rtn))
End If
Next

'===============================================
KeyGen = gKey

End Function
叶帆 2003-09-01
  • 打赏
  • 举报
回复
'*************************************************************************
'**函 数 名:GetHDNo
'**输 入:无
'**输 出:(String) - 硬盘的序列号
'**功能描述:返回首硬盘的物理硬盘的号
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年05月30日
'**修 改 人:
'**日 期:
'**版 本:V1.0
'*************************************************************************
Public Function GetHDNo() As String
Dim shdid As String
Dim us As String
shdid = "ERROR"
us = GetHDID(shdid) - 参考林大炮 兄的获取硬盘出厂码的例子
GetHDNo = shdid
End Function


'*************************************************************************
'**函 数 名:getSeriorNumber
'**输 入:sRoot(String) - 逻辑盘符 如: C: D:
'**输 出:(Long) - 序列码
'**功能描述:返回磁盘的序列号
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年04月19日
'**修 改 人:
'**日 期:
'**版 本:版本1.0
'*************************************************************************
Public Function getSeriorNumber(sRoot As String) As Long
Dim lSerialNum As Long
Dim R As Long
Dim strLabel As String, strType As String
strLabel = String$(255, Chr$(0)) '磁盘卷标
strType = String$(255, Chr$(0)) '文件系统类型 一般为 FAT
R = GetVolumeInformation(sRoot, strLabel, Len(strLabel), lSerialNum, 0, 0, strType, Len(strType))
getSeriorNumber = lSerialNum '在 strLabel 中为 磁盘卷标 '在 strType 中为 文件系统类型
End Function
叶帆 2003-09-01
  • 打赏
  • 举报
回复
'*************************************************************************
'**函 数 名:GetHDNo
'**输 入:无
'**输 出:(String) - 硬盘的序列号
'**功能描述:返回首硬盘的物理硬盘的号
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年05月30日
'**修 改 人:
'**日 期:
'**版 本:V1.0
'*************************************************************************
Public Function GetHDNo() As String
Dim shdid As String
Dim us As String
shdid = "ERROR"
us = GetHDID(shdid) - 参考林大炮 兄的获取硬盘出厂码的例子
GetHDNo = shdid
End Function


'*************************************************************************
'**函 数 名:getSeriorNumber
'**输 入:sRoot(String) - 逻辑盘符 如: C: D:
'**输 出:(Long) - 序列码
'**功能描述:返回磁盘的序列号
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年04月19日
'**修 改 人:
'**日 期:
'**版 本:版本1.0
'*************************************************************************
Public Function getSeriorNumber(sRoot As String) As Long
Dim lSerialNum As Long
Dim R As Long
Dim strLabel As String, strType As String
strLabel = String$(255, Chr$(0)) '磁盘卷标
strType = String$(255, Chr$(0)) '文件系统类型 一般为 FAT
R = GetVolumeInformation(sRoot, strLabel, Len(strLabel), lSerialNum, 0, 0, strType, Len(strType))
getSeriorNumber = lSerialNum '在 strLabel 中为 磁盘卷标 '在 strType 中为 文件系统类型
End Function
dsclub 2003-09-01
  • 打赏
  • 举报
回复
支持一下
叶帆 2003-09-01
  • 打赏
  • 举报
回复
API浏览器【完整版】:http://soft.269.net/SoftWareView.asp?SoftWareID=47201
VB代码注释器: http://soft.269.net/SoftWareView.asp?SoftWareID=46994

现在回答一下,原贴的有关问题:
=================================
tanyx(不知道)
1、我在输入框中输入几个字母,一动鼠标(点击某选项),这字母就没有了,这是不允许的。
2、每次按键都引起屏幕变化,也是太“硬”的表现,我在设计系统时,可不敢这样做,至少有个延时吧?最好是等待“回车”。
---------------------------------
这个问题其实挺好改,不知其他朋友是否认可该意见?
==================================
JayZhou(周杰伦)
我想请教楼主一下:是怎么把MDB数据库加密的,能不能给我些思路,尤其是怎么把在开数据库时生成的*.ldb给藏起来???
---------------------------------
把mdb数据库隐藏在一个秘密的目录,最后文件名随机,这样*.ldb和mdb数据一个目录,也相应隐藏了(不过对付专门解密,这太弱)
==================================
lvcu()
加密算法

我收集整理了一个经典的程序(可以用硬盘,磁盘序列号加密)
现在公开给大家:







1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧