• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在asp中通過vbs類實現rsa加密與解密

    發布: 2007-7-14 19:37 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 18次 | 進入軟件測試論壇討論

    領測軟件測試網

    本文章有兩文件組成
    test.asp 測試演示文件
    clsrsa.asp 實現rsa加密與解密的vbs類文件
    下面是代碼:

    1. test.asp

    <%
    rem 文章標題:在asp中通過vbs類實現rsa加密與解密
    rem 收集整理:yanek
    rem 聯系:aspboy@263.net

    %>
    <%Option Explicit%>
    <!--#INCLUDE FILE="clsRSA.asp"-->
    <%

    Dim LngKeyE
    Dim LngKeyD
    Dim LngKeyN
    Dim StrMessage
    Dim ObjRSA
    If Not Request.Form = "" Then

    LngKeyE = Request.Form("KeyE")
    LngKeyD = Request.Form("KeyD")
    LngKeyN = Request.Form("KeyN")
    StrMessage = Request.Form("Message")

    Set ObjRSA = New clsRSA

    Select Case Request.Form("Action")
    Case "Generate Keys"
    Call ObjRSA.GenKey()
    LngKeyE = ObjRSA.PublicKey
    LngKeyD = ObjRSA.PrivateKey
    LngKeyN = ObjRSA.Modulus
    Case "Encrypt"
    ObjRSA.PublicKey = LngKeyE
    ObjRSA.Modulus = LngKeyN
    StrMessage = ObjRSA.Encode(StrMessage)
    Case "Decrypt"
    ObjRSA.PrivateKey = LngKeyD
    ObjRSA.Modulus = LngKeyN
    StrMessage = ObjRSA.Decode(StrMessage)
    End Select

    Set ObjRSA = Nothing

    End If
    %>
    <HTML>
    <HEAD>
    <TITLE>RSA Cipher Demonstration</TITLE>
    </HEAD>
    <BODY>
    <H1>RSA Cipher Demonstration</H1>
    <P>
    You will first need to generate your public/privage key-pair
    before you can encrypt/decrypt messages.
    </P>
    <FORM method="post">
    <TABLE>
    <TR>
    <TD>Public Key</TD>
    <TD><INPUT name="KeyE" value="<%=Server.HTMLEncode(LngKeyE)%>"></TD>
    <TD rowspan="3">
    <INPUT type="Submit" name="Action" value="Generate Keys">
    </TD>
    </TR>
    <TR>
    <TD>Private Key</TD>
    <TD><INPUT name="KeyD" value="<%=Server.HTMLEncode(LngKeyD)%>"></TD>
    </TR>
    <TR>
    <TD>Modulus</TD>
    <TD><INPUT name="KeyN" value="<%=Server.HTMLEncode(LngKeyN)%>"></TD>
    </TR>
    <TR>
    <TD colspan="3">
    Test Message:<BR>
    <TEXTAREA name="Message" cols="50" rows="7"><%=Server.HTMLEncode(StrMessage)%></TEXTAREA>
    </TD>
    </TR>
    <TR>
    <TD align="right" colspan="3">
    <INPUT type="Submit" name="Action" value="Encrypt">
    <INPUT type="Submit" name="Action" value="Decrypt">
    </TD>
    </TR>
    </TABLE>
    </FORM>
    </BODY>
    </HTML>

    clsrsa.asp

    <%
    rem 實現rsa加密與解密的vbs類文件
    rem 文章標題:在asp中通過vbs類實現rsa加密與解密
    rem 收集整理:yanek
    rem 聯系:aspboy@263.net

    ' RSA Encryption Class
    '
    ' .PrivateKey
    ' Your personal private key. Keep this hidden.
    '
    ' .PublicKey
    ' Key for others to encrypt data with.
    '
    ' .Modulus
    ' Used with both public and private keys when encrypting
    ' and decrypting data.
    '
    ' .GenKey()
    ' Creates Public/Private key set and Modulus
    '
    ' .Crypt(pLngMessage, pLngKey)
    ' Encrypts/Decrypts message and returns
    ' as a string.
    '
    ' .Encode(pStrMessage)
    ' Encrypts message and returns in double-hex format
    '
    ' .Decode(pStrMessage)
    ' Decrypts message from double-hex format and returns a string
    '
    Class clsRSA

    Public PrivateKey
    Public PublicKey
    Public Modulus

    Public Sub GenKey()
    Dim lLngPhi
    Dim q
    Dim p

    Randomize

    Do
    Do

    ' 2 random primary numbers (0 to 1000)
    Do
    p = Rnd * 1000 \ 1
    Loop While Not IsPrime(p)

    Do
    q = Rnd * 1000 \ 1
    Loop While Not IsPrime(q)


    ' n = product of 2 primes
    Modulus = p * q \ 1

    ' random decryptor (2 to n)
    PrivateKey = Rnd * (Modulus - 2) \ 1 + 2

    lLngPhi = (p - 1) * (q - 1) \ 1
    PublicKey = Euler(lLngPhi, PrivateKey)

    Loop While PublicKey = 0 Or PublicKey = 1

    ' Loop if we can't crypt/decrypt a byte
    Loop While Not TestCrypt(255)

    End Sub

    Private Function TestCrypt(ByRef pBytData)
    Dim lStrCrypted
    lStrCrypted = Crypt(pBytData, PublicKey)
    TestCrypt = Crypt(lStrCrypted, PrivateKey) = pBytData
    End Function

    Private Function Euler(ByRef pLngPHI, ByRef pLngKey)

    Dim lLngR(3)
    Dim lLngP(3)
    Dim lLngQ(3)

    Dim lLngCounter
    Dim lLngResult

    Euler = 0

    lLngR(1) = pLngPHI: lLngR(0) = pLngKey
    lLngP(1) = 0: lLngP(0) = 1
    lLngQ(1) = 2: lLngQ(0) = 0

    lLngCounter = -1

    Do Until lLngR(0) = 0

    lLngR(2) = lLngR(1): lLngR(1) = lLngR(0)
    lLngP(2) = lLngP(1): lLngP(1) = lLngP(0)
    lLngQ(2) = lLngQ(1): lLngQ(1) = lLngQ(0)

    lLngCounter = lLngCounter + 1

    lLngR(0) = lLngR(2) Mod lLngR(1)
    lLngP(0) = ((lLngR(2)\lLngR(1)) * lLngP(1)) + lLngP(2)
    lLngQ(0) = ((lLngR(2)\lLngR(1)) * lLngQ(1)) + lLngQ(2)

    Loop

    lLngResult = (pLngKey * lLngP(1)) - (pLngPHI * lLngQ(1))

    If lLngResult > 0 Then
    Euler = lLngP(1)
    Else
    Euler = Abs(lLngP(1)) + pLngPHI
    End If

    End Function

    Public Function Crypt(pLngMessage, pLngKey)
    On Error Resume Next
    Dim lLngMod
    Dim lLngResult
    Dim lLngIndex
    If pLngKey Mod 2 = 0 Then
    lLngResult = 1
    For lLngIndex = 1 To pLngKey / 2
    lLngMod = (pLngMessage ^ 2) Mod Modulus
    ' Mod may error on key generation
    lLngResult = (lLngMod * lLngResult) Mod Modulus
    If Err Then Exit Function
    Next
    Else
    lLngResult = pLngMessage
    For lLngIndex = 1 To pLngKey / 2
    lLngMod = (pLngMessage ^ 2) Mod Modulus
    On Error Resume Next
    ' Mod may error on key generation
    lLngResult = (lLngMod * lLngResult) Mod Modulus
    If Err Then Exit Function
    Next
    End If
    Crypt = lLngResult
    End Function

    Private Function IsPrime(ByRef pLngNumber)
    Dim lLngSquare
    Dim lLngIndex
    IsPrime = False
    If pLngNumber < 2 Then Exit Function
    If pLngNumber Mod 2 = 0 Then Exit Function
    lLngSquare = Sqr(pLngNumber)
    For lLngIndex = 3 To lLngSquare Step 2
    If pLngNumber Mod lLngIndex = 0 Then Exit Function
    Next
    IsPrime = True
    End Function

    Public Function Encode(ByVal pStrMessage)
    Dim lLngIndex
    Dim lLngMaxIndex
    Dim lBytAscii
    Dim lLngEncrypted
    lLngMaxIndex = Len(pStrMessage)
    If lLngMaxIndex = 0 Then Exit Function
    For lLngIndex = 1 To lLngMaxIndex
    lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
    lLngEncrypted = Crypt(lBytAscii, PublicKey)
    Encode = Encode & NumberToHex(lLngEncrypted, 4)
    Next
    End Function

    Public Function Decode(ByVal pStrMessage)
    Dim lBytAscii
    Dim lLngIndex
    Dim lLngMaxIndex
    Dim lLngEncryptedData
    Decode = ""
    lLngMaxIndex = Len(pStrMessage)
    For lLngIndex = 1 To lLngMaxIndex Step 4
    lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
    lBytAscii = Crypt(lLngEncryptedData, PrivateKey)
    Decode = Decode & Chr(lBytAscii)
    Next
    End Function

    Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
    NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
    End Function

    Private Function HexToNumber(ByRef pStrHex)
    HexToNumber = CLng("&h" & pStrHex)
    End Function

    End Class
    %>
    演示地址:http://www.cnaspol.com/myrsa/test.asp


    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>