• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> ASP开发 >> 安全加密 >> 详细内容
 

推荐文章

  • SQL注入天书之ASP注入漏洞全接触
 
 

热点文章

  • ASP上传漏洞防范
  • SQL注入天书之ASP注入漏洞全接触
  • 实施自动的SQL注入攻击测试
  • ASP限制IP访问的小代码
  • asp作品保护方案
  • 对网站使用ASP+ACCESS的一个忠告
  • 用ASP+SQL Server为网页建一道防火墙
  • 一段在asp中加密与解密对应的函数
  • 一段加密函数(base64)
  • 如何用asp进行base64加密
  • 一套加解密字符串的函数
  • MD5算法研究
 
 

相关文章

  • iPlanet Web Server 缓冲区溢出漏洞
  • Translate: f ,IIS 5.0 源码泄漏..
  • 最新的ASP、IIS安全漏洞
  • 堵住ASP漏洞
  • 如何用asp进行base64加密
  • ASP原码加密工具介绍
  • Win2k IIS 远程执行命令漏洞
  • 微软IIS 5.0泄漏索引目录的漏洞
  • 安全脚本程序的编写 V1.0
  • 安全脚本程序的编写 V1.0
  • global.asa+.htr暴露global.asa内容
  • ASP程序密码验证问题 (MS,缺陷)
 
 

百度搜索

 
 

在asp中通过vbs类实现rsa加密与解密

  • 阅览次数:
  • 文章来源: 网海之贝
  • 原文作者: 佚名
  • 整理日期: 2006-10-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

本文章有两文件组成
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

上一篇:MySQL数据库的导入导出 和 Liunx的权限
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号