亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modcrypt.bas

?? 調用系統CryptAPI加密解密的示例代碼.
?? BAS
字號:
Attribute VB_Name = "modCrypt"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Description:  This module provides encryption/decryption through
'               the CryptoAPI. This is the standard API you can use
'               regardless of the underlying dll used to do the encryption.
'               These dlls are called Cryptographic Service Providers (CSPs)
'               and you get one as standard from Microsoft called
'               "Microsoft Base Cryptographic Provider v1.0"
'               This module uses the standard CSP, but this can be changed
'               by changing the constant SERVICE_PROVIDER
'               There is additional code in this module to ensure that
'               the encrypted values do not contain CR or LF characters
'               so that the result can be written to a file
'
'               A word of warning:
'               If you are going to use WritePrivateProfileString to write the
'               encrypted value to an ini file, you must write a NULL first
'               to delete the existing entry as it does not clear previous
'               entries when writing binary data. This is a problem if you
'               are overwriting a value with a smaller one.
'
' Example usage:
'
'    Private Const MY_PASSWORD As String = "isdflkaatdfuhwfnasdf"
'
'    Public Sub Main()
'        Dim sEncrypted As String
'        EncryptionCSPConnect
'        sEncrypted = EncryptData("hello world", MY_PASSWORD)
'        MsgBox DecryptData(sEncrypted, MY_PASSWORD)
'        EncryptionCSPDisconnect
'    End Sub
'
'
' Created By:   Barry Dunne
' Date Created: 31 Jan 2000
'
' Public Interface:
'
'   Function EncryptionCSPConnect() As Boolean
'       - Connect to CSP, must be called before using encryption
'   Function EncryptData(ByVal Data As String, ByVal Password As String) As String
'       - Encrypt a string
'   Function DecryptData(ByVal Data As String, ByVal Password As String) As String
'       - Decrypt a string
'   Function GetCSPDetails() As String
'       - Returns the CSP details
'   Sub EncryptionCSPDisconnect()
'       - Release handle, must be called when finished using encryption
'
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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 CryptGetProvParam Lib "advapi32.dll" _
    (ByVal hProv As Long, _
     ByVal dwParam As Long, _
     ByRef pbData As Any, _
     ByRef pdwDataLen 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 CryptHashData Lib "advapi32.dll" _
    (ByVal hHash As Long, _
     ByVal pbData As String, _
     ByVal dwDataLen As Long, _
     ByVal dwFlags As Long) As Long
     
Private Declare Function CryptDeriveKey Lib "advapi32.dll" _
    (ByVal hProv As Long, _
     ByVal Algid As Long, _
     ByVal hBaseData As Long, _
     ByVal dwFlags As Long, _
     ByRef phKey As Long) As Long
     
Private Declare Function CryptDestroyHash Lib "advapi32.dll" _
    (ByVal hHash As Long) As Long
    
Private Declare Function CryptEncrypt Lib "advapi32.dll" _
    (ByVal hKey As Long, _
     ByVal hHash As Long, _
     ByVal Final As Long, _
     ByVal dwFlags As Long, _
     ByVal pbData As String, _
     ByRef pdwDataLen As Long, _
     ByVal dwBufLen As Long) As Long

Private Declare Function CryptDestroyKey Lib "advapi32.dll" _
    (ByVal hKey As Long) As Long

Private Declare Function CryptReleaseContext Lib "advapi32.dll" _
    (ByVal hProv As Long, _
     ByVal dwFlags As Long) As Long

Private Declare Function CryptDecrypt Lib "advapi32.dll" _
    (ByVal hKey As Long, _
     ByVal hHash As Long, _
     ByVal Final As Long, _
     ByVal dwFlags As Long, _
     ByVal pbData As String, _
     ByRef pdwDataLen As Long) As Long

Private Const SERVICE_PROVIDER As String = "Microsoft Base Cryptographic Provider v1.0"
Private Const KEY_CONTAINER As String = "Metallica"
Private Const PROV_RSA_FULL As Long = 1
Private Const PP_NAME As Long = 4
Private Const PP_CONTAINER As Long = 6
Private Const CRYPT_NEWKEYSET As Long = 8
Private Const ALG_CLASS_DATA_ENCRYPT As Long = 24576
Private Const ALG_CLASS_HASH As Long = 32768
Private Const ALG_TYPE_ANY As Long = 0
Private Const ALG_TYPE_STREAM As Long = 2048
Private Const ALG_SID_RC4 As Long = 1
Private Const ALG_SID_MD5 As Long = 3
Private Const CALG_MD5 As Long = ((ALG_CLASS_HASH Or ALG_TYPE_ANY) Or ALG_SID_MD5)
Private Const CALG_RC4 As Long = ((ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_STREAM) Or ALG_SID_RC4)
Private Const ENCRYPT_ALGORITHM As Long = CALG_RC4
Private Const NUMBER_ENCRYPT_PASSWORD As String = "磑竤鏟Q]"

Private hCryptProv As Long

Public Function EncryptionCSPConnect() As Boolean
    'Get handle to CSP
    If CryptAcquireContext(hCryptProv, KEY_CONTAINER, SERVICE_PROVIDER, PROV_RSA_FULL, CRYPT_NEWKEYSET) = 0 Then
        If CryptAcquireContext(hCryptProv, KEY_CONTAINER, SERVICE_PROVIDER, PROV_RSA_FULL, 0) = 0 Then
            HandleError "Error during CryptAcquireContext for a new key container." & vbCrLf & _
                        "A container with this name probably already exists."
            EncryptionCSPConnect = False
            Exit Function
        End If
    End If
    
    EncryptionCSPConnect = True
End Function

Public Sub EncryptionCSPDisconnect()
    'Release provider handle.
    If hCryptProv <> 0 Then
        CryptReleaseContext hCryptProv, 0
    End If
End Sub

Public Function EncryptData(ByVal Data As String, ByVal Password As String) As String
    Dim sEncrypted As String
    Dim lEncryptionCount As Long
    Dim sTempPassword As String
    
    'It is possible that the normal encryption will give you a string
    'containing cr or lf characters which make it difficult to write to files
    'Do a loop changing the password and keep encrypting until the result is ok
    'To be able to decrypt we need to also store the number of loops in the result
    
    'Try first encryption
    lEncryptionCount = 0
    sTempPassword = Password & lEncryptionCount
    sEncrypted = EncryptDecrypt(Data, sTempPassword, True)
    
    'Loop if this contained a bad character
    Do While (InStr(1, sEncrypted, vbCr) > 0) _
          Or (InStr(1, sEncrypted, vbLf) > 0) _
          Or (InStr(1, sEncrypted, Chr$(0)) > 0) _
          Or (InStr(1, sEncrypted, vbTab) > 0)
          
        'Try the next password
        lEncryptionCount = lEncryptionCount + 1
        sTempPassword = Password & lEncryptionCount
        sEncrypted = EncryptDecrypt(Data, sTempPassword, True)
        
        'Don't go on for ever, 1 billion attempts should be plenty
        If lEncryptionCount = 99999999 Then
            Err.Raise vbObjectError + 999, "EncryptData", "This data cannot be successfully encrypted"
            EncryptData = ""
            Exit Function
        End If
    Loop
    
    'Build encrypted string, starting with number of encryption iterations
    EncryptData = EncryptNumber(lEncryptionCount) & sEncrypted
End Function

Public Function DecryptData(ByVal Data As String, ByVal Password As String) As String
    Dim lEncryptionCount As Long
    Dim sDecrypted As String
    Dim sTempPassword As String
    
    'When encrypting we may have gone through a number of iterations
    'How many did we go through?
    lEncryptionCount = DecryptNumber(Mid$(Data, 1, 8))
    
    'start with the last password and work back
    sTempPassword = Password & lEncryptionCount
    sDecrypted = EncryptDecrypt(Mid$(Data, 9), sTempPassword, False)
    
    DecryptData = sDecrypted
End Function

Public Function GetCSPDetails() As String
    Dim lLength As Long
    Dim yContainer() As Byte
    
    If hCryptProv = 0 Then
        GetCSPDetails = "Not connected to CSP"
        Exit Function
    End If
    
    'For developer info, show what the CSP & container name is
    lLength = 1000
    ReDim yContainer(lLength)
    If CryptGetProvParam(hCryptProv, PP_NAME, yContainer(0), lLength, 0) <> 0 Then
        GetCSPDetails = "Cryptographic Service Provider name: " & ByteToStr(yContainer, lLength)
    End If
    lLength = 1000
    ReDim yContainer(lLength)
    If CryptGetProvParam(hCryptProv, PP_CONTAINER, yContainer(0), lLength, 0) <> 0 Then
        GetCSPDetails = GetCSPDetails & vbCrLf & "Key Container name: " & ByteToStr(yContainer, lLength)
    End If
End Function

Private Function EncryptDecrypt(ByVal Data As String, ByVal Password As String, ByVal Encrypt As Boolean) As String
    Dim lLength As Long
    Dim sTemp As String
    Dim hHash As Long
    Dim hKey As Long
    
    If hCryptProv = 0 Then
        HandleError "Not connected to CSP"
        Exit Function
    End If
    
    '--------------------------------------------------------------------
    'The data will be encrypted with a session key derived from the
    'password.
    'The session key will be recreated when the data is decrypted
    'only if the password used to create the key is available.
    '--------------------------------------------------------------------

    'Create a hash object.
    If CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, hHash) = 0 Then
        HandleError "Error during CryptCreateHash!"
    End If

    'Hash the password.
    If CryptHashData(hHash, Password, Len(Password), 0) = 0 Then
        HandleError "Error during CryptHashData."
    End If
    
    'Derive a session key from the hash object.
    If CryptDeriveKey(hCryptProv, ENCRYPT_ALGORITHM, hHash, 0, hKey) = 0 Then
        HandleError "Error during CryptDeriveKey!"
    End If
    
    'Do the work
    sTemp = Data
    lLength = Len(Data)
    If Encrypt Then
        'Encrypt data.
        If CryptEncrypt(hKey, 0, 1, 0, sTemp, lLength, lLength) = 0 Then
            HandleError "Error during CryptEncrypt."
        End If
    Else
        'Encrypt data.
        If CryptDecrypt(hKey, 0, 1, 0, sTemp, lLength) = 0 Then
            HandleError "Error during CryptDecrypt."
        End If
    End If

    'This is what we return.
    EncryptDecrypt = Mid$(sTemp, 1, lLength)
    
    'Destroy session key.
    If hKey <> 0 Then
        CryptDestroyKey hKey
    End If

    'Destroy hash object.
    If hHash <> 0 Then
        CryptDestroyHash hHash
    End If
End Function

Private Sub HandleError(ByVal Error As String)
    'You could write the error to the screen or to a file
    Debug.Print Error
End Sub

Private Function ByteToStr(ByRef ByteArray() As Byte, ByVal lLength As Long) As String
    Dim i As Long
    For i = LBound(ByteArray) To (LBound(ByteArray) + lLength)
        ByteToStr = ByteToStr & Chr$(ByteArray(i))
    Next i
End Function

Private Function EncryptNumber(ByVal lNumber As Long) As String
    Dim i As Long
    Dim sNumber As String
    
    sNumber = Format$(lNumber, "00000000")
    
    For i = 1 To 8
        EncryptNumber = EncryptNumber & Chr$(Asc(Mid$(NUMBER_ENCRYPT_PASSWORD, i, 1)) + Val(Mid$(sNumber, i, 1)))
    Next i
End Function

Private Function DecryptNumber(ByVal sNumber As String) As Long
    Dim i As Long
    
    For i = 1 To 8
        DecryptNumber = (10 * DecryptNumber) + (Asc(Mid$(sNumber, i, 1)) - Asc(Mid$(NUMBER_ENCRYPT_PASSWORD, i, 1)))
    Next i
End Function



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区久久| 日韩欧美不卡一区| 欧美一区二区不卡视频| 国模冰冰炮一区二区| 亚洲成av人片一区二区梦乃| 亚洲综合色丁香婷婷六月图片| 五月天激情小说综合| av在线播放不卡| 欧美日韩www| 亚洲视频网在线直播| 美女一区二区视频| 欧美色图片你懂的| 国产精品传媒在线| 麻豆精品国产91久久久久久| 色先锋aa成人| 中文字幕一区二区三区视频| 国产一区二区精品久久| 日韩亚洲国产中文字幕欧美| 一区二区成人在线视频| 国产精品91一区二区| 欧美大片在线观看一区二区| 天天操天天色综合| 欧美自拍丝袜亚洲| 一区二区三区中文字幕| 99在线热播精品免费| 欧美成人艳星乳罩| 免费三级欧美电影| 在线播放日韩导航| 天天av天天翘天天综合网| 在线看不卡av| 亚洲第一狼人社区| 欧美午夜精品免费| 夜夜嗨av一区二区三区四季av| 成人白浆超碰人人人人| 国产欧美中文在线| 丁香激情综合国产| 亚洲欧洲日本在线| 色老汉av一区二区三区| 一个色综合网站| 欧美日韩久久一区| 色哟哟精品一区| 亚洲激情一二三区| 欧美日韩高清一区二区| 日本vs亚洲vs韩国一区三区二区| 欧美精品 日韩| 美女脱光内衣内裤视频久久网站| 精品区一区二区| 国产高清精品网站| 国产精品久久久久久久蜜臀| 91蜜桃在线免费视频| 亚洲一二三四区不卡| 欧美日韩第一区日日骚| 九九国产精品视频| 国产精品午夜电影| 欧美日韩一区高清| 久久99精品久久久久| 国产精品伦理一区二区| 91国偷自产一区二区使用方法| 亚洲资源中文字幕| 日韩精品一区二区三区在线| 国产精品一区一区三区| 亚洲色图欧洲色图婷婷| 欧美日韩国产高清一区二区| 狠狠色2019综合网| 亚洲精品免费视频| 欧美大肚乱孕交hd孕妇| 91色综合久久久久婷婷| 日韩电影网1区2区| 中文幕一区二区三区久久蜜桃| 色一区在线观看| 国产美女一区二区| 亚洲一区二区三区影院| 久久综合成人精品亚洲另类欧美 | 天堂久久久久va久久久久| 26uuu亚洲| 欧美综合一区二区三区| 国产高清精品在线| 日日夜夜一区二区| 综合av第一页| 久久精品亚洲一区二区三区浴池| 欧洲国内综合视频| 国产成人免费高清| 蜜乳av一区二区三区| 亚洲乱码中文字幕| 久久精品人人做人人爽人人| 欧美三级视频在线播放| 成人av网站在线观看免费| 免费不卡在线观看| 香蕉久久夜色精品国产使用方法| 久久天堂av综合合色蜜桃网| 欧美精品日韩精品| 岛国精品在线观看| 国产揄拍国内精品对白| 日韩精品免费视频人成| 亚洲精品成人精品456| 欧美激情综合五月色丁香| 欧美一区二区三区在线视频 | 久久se精品一区二区| 亚洲一区二区在线观看视频| 国产精品青草久久| 久久网这里都是精品| 精品国产一区a| 91精品欧美综合在线观看最新 | 麻豆精品精品国产自在97香蕉| 亚洲精品视频一区二区| 国产精品久久久久影院老司| 精品国产1区二区| 日韩免费视频线观看| 色哟哟欧美精品| 99久久久久久| av在线不卡观看免费观看| 成人激情动漫在线观看| 懂色一区二区三区免费观看| 国产一区 二区 三区一级| 激情丁香综合五月| 韩国女主播一区| 国产精品一区在线观看乱码| 久久99久久久欧美国产| 国产一区二区视频在线播放| 精品亚洲成av人在线观看| 麻豆视频观看网址久久| 麻豆精品精品国产自在97香蕉| 美女mm1313爽爽久久久蜜臀| 亚洲区小说区图片区qvod| 欧美一区二区日韩一区二区| 欧洲精品一区二区三区在线观看| 在线免费av一区| 精品视频123区在线观看| 欧美日韩aaaaa| 欧美成人一区二区| 久久久久国产免费免费| 国产精品黄色在线观看| 亚洲三级在线看| 亚洲不卡一区二区三区| 日韩精品亚洲一区二区三区免费| 六月丁香综合在线视频| 国产一区二区在线观看免费| 成人免费的视频| 欧美性xxxxxxxx| 日韩午夜中文字幕| 中文子幕无线码一区tr| 悠悠色在线精品| 九九精品视频在线看| 99热在这里有精品免费| 在线观看中文字幕不卡| 欧美一三区三区四区免费在线看 | 中文字幕亚洲不卡| 亚洲免费在线观看| 日韩av电影天堂| 国产精品99久久不卡二区| 91免费视频网址| 日韩精品一区二区三区swag| 国产精品三级久久久久三级| 亚洲国产成人tv| 国产精品亚洲人在线观看| 色8久久精品久久久久久蜜| 欧美日韩中文字幕精品| 久久久99免费| 亚洲不卡av一区二区三区| 国产精品一二二区| 欧美在线观看视频在线| 久久久久青草大香线综合精品| 亚洲精品亚洲人成人网在线播放| 日本视频免费一区| 91猫先生在线| 久久日韩精品一区二区五区| 一区二区三区精品视频| 国产ts人妖一区二区| 91麻豆精品国产91久久久使用方法 | 久久久久99精品一区| 亚洲一区二区三区自拍| 成人免费毛片片v| 欧美成人vr18sexvr| 亚洲h动漫在线| 91在线一区二区三区| 久久美女艺术照精彩视频福利播放| 亚洲视频在线一区观看| 国产一区二区剧情av在线| 欧美日韩一区二区在线观看| 成人免费在线播放视频| 国产成人aaaa| 久久女同性恋中文字幕| 青青草精品视频| 欧美日韩成人在线| 亚洲精品久久7777| 99久久精品免费看| 国产精品蜜臀av| 国产ts人妖一区二区| 久久精品免费在线观看| 久久福利视频一区二区| 538在线一区二区精品国产| 亚洲一区二区免费视频| 日本高清无吗v一区| 亚洲精品国久久99热| 99久久精品免费| 亚洲欧洲国产日本综合| 成人av在线看| 亚洲美女少妇撒尿| 91国产视频在线观看| 亚洲国产一二三|