• 基于RSA算法在asp中加密与解密对应的函数


    在ASP中加密方法有对应的解密方法好象不多,现在根据前辈资料整理出在asp中加密与解密函数,根据RSA 算法实现的。

    什么是RSA?

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

    更多关于RSA的介绍请看:http://baike.baidu.com/view/7520.htm

    rsa.asp

    <% 
    rem 在ASP中实现加密与解密,加密方法:根据RSA 
    rem 联系:hnsoso@sina.com 
    Class clsRSA 
      Public PrivateKey 
      Public PublicKey 
      Public Modulus 
    
      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 
    
      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 
    %> 

    测试页面 test.asp

    <!--#INCLUDE FILE="RSA.asp"--> 
    <% 
    function Encryptstr(Message) 
    Dim LngKeyE 
    Dim LngKeyD 
    Dim LngKeyN 
    Dim StrMessage 
    Dim ObjRSA 
      LngKeyE = "32823" 
      LngKeyD = "20643" 
      LngKeyN = "29893" 
      StrMessage = Message 
      Set ObjRSA = New clsRSA 
          ObjRSA.PublicKey = LngKeyE 
          ObjRSA.Modulus = LngKeyN 
          Encryptstr = ObjRSA.Encode(StrMessage) 
      Set ObjRSA = Nothing 
    end function 
    function decryptstr(Message) Dim LngKeyE Dim LngKeyD Dim LngKeyN Dim StrMessage Dim ObjRSA   LngKeyE = "32823"   LngKeyD = "20643"   LngKeyN = "29893"   StrMessage = Message   Set ObjRSA = New clsRSA       ObjRSA.PrivateKey =LngKeyD       ObjRSA.Modulus=LngKeyN       decryptstr=ObjRSA.Decode(StrMessage)   Set ObjRSA = Nothing end function dim last,first first="sohu" Response.Write "加密前为:"&first last=Encryptstr(first) Response.Write "加密后为"&last Response.Write "解密后为" &decryptstr(last) %>
  • 相关阅读:
    3.4
    3.3 TensorFlow运行模型 ------- 会话
    3.2 TensorFlow数据模型 ---- 张量
    3.1 TensorFlow计算模型 --- 计算图
    寻找两个有序数组的中位数
    最长子串
    vector的遍历删除
    超时空大决战
    面经七
    面经五
  • 原文地址:https://www.cnblogs.com/webczw/p/3055050.html
Copyright © 2020-2023  润新知