「已注销」 2016-05-09 08:10 采纳率: 100%
浏览 1639
已采纳

一个关于VB设计注册机的问题

图片说明
照其他资料写了分别为:”获取计算机某码“、”利用计算机某码生成注册码“、”利用注册码登录主程序“这三个程序,那么,下面怎么做?如何写一个主机端,主机端可以为注册码:“设置时间限制”、“给注册码加时间”、“通过我的主机端能看到客户端注册码使用信息“这三类?
求师傅指点迷津 【提供一下思路也可以】

  • 写回答

2条回答

  • pay21 2016-05-09 09:45
    关注

    MD5("软件名称和版本号"+"软件合法使用的时间和地点信息"+"软件作者的身份证号"+"软件卖出的价格"+"使用者的身份证号"+"使用者的手机号"+"一个只有软件作者知道的密码")
    VB code
    Option Explicit
    Private Declare Function CryptAcquireContext Lib "advapi32.dll" Alias "CryptAcquireContextA" (ByRef phProv As Long, ByVal pszContainer As String, ByVal pszProvider As String, ByVal dwProvType As Long, ByVal dwFlags As Long) As Long
    Private Declare Function CryptReleaseContext Lib "advapi32.dll" (ByVal hProv As Long, ByVal dwFlags As Long) As Long
    Private Declare Function CryptCreateHash Lib "advapi32.dll" (ByVal hProv As Long, ByVal Algid As Long, ByVal hKey As Long, ByVal dwFlags As Long, ByRef phHash As Long) As Long
    Private Declare Function CryptDestroyHash Lib "advapi32.dll" (ByVal hHash As Long) As Long
    Private Declare Function CryptHashData Lib "advapi32.dll" (ByVal hHash As Long, pbData As Any, ByVal dwDataLen As Long, ByVal dwFlags As Long) As Long
    Private Declare Function CryptGetHashParam Lib "advapi32.dll" (ByVal hHash As Long, ByVal dwParam As Long, pbData As Any, pdwDataLen As Long, ByVal dwFlags As Long) As Long
    Private Const HP_HASHVAL = 2
    Private Const HP_HASHSIZE = 4
    Private Const PROV_RSA_FULL = 1
    Private Const CRYPT_NEWKEYSET = &H8
    Private Const ALG_CLASS_HASH = 32768
    Private Const ALG_TYPE_ANY = 0
    Private Const ALG_SID_MD2 = 1
    Private Const ALG_SID_MD4 = 2
    Private Const ALG_SID_MD5 = 3
    Private Const ALG_SID_SHA1 = 4
    Enum HashAlgorithm
    MD2 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD2
    MD4 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD4
    MD5 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5
    SHA1 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1
    End Enum

    Public Function HashString(ByVal Str As String, Optional ByVal Algorithm As HashAlgorithm = MD5) As String
    Dim hCtx As Long
    Dim hHash As Long
    Dim lRes As Long
    Dim lLen As Long
    Dim lIdx As Long
    Dim abData() As Byte

    lRes = CryptAcquireContext(hCtx, vbNullString, vbNullString, PROV_RSA_FULL, 0)
    If lRes <> 0 Then
    lRes = CryptCreateHash(hCtx, Algorithm, 0, 0, hHash)
    If lRes <> 0 Then
    lRes = CryptHashData(hHash, ByVal Str, Len(Str), 0)
    If lRes <> 0 Then
    lRes = CryptGetHashParam(hHash, HP_HASHSIZE, lLen, 4, 0)
    If lRes <> 0 Then
    ReDim abData(0 To lLen - 1)
    lRes = CryptGetHashParam(hHash, HP_HASHVAL, abData(0), lLen, 0)
    If lRes <> 0 Then
    For lIdx = 0 To UBound(abData)
    HashString = HashString & Right$("0" & Hex$(abData(lIdx)), 2)
    Next
    End If
    End If
    End If
    CryptDestroyHash hHash
    End If
    End If
    CryptReleaseContext hCtx, 0
    If lRes = 0 Then Err.Raise Err.LastDllError
    End Function
    【转载】

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案