一段在asp中加密与解密对应的函数

时间:2022-09-18 22:23:16

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

rsa.asp

  1. <% 
  2.  
  3. rem在ASP中实现加密与解密,加密方法:根据RSA 
  4.  
  5. rem联系:hnsoso@sina.com 
  6.  
  7. ClassclsRSA 
  8.  
  9. PublicPrivateKey 
  10.  
  11. PublicPublicKey 
  12.  
  13. PublicModulus 
  14.  
  15. PublicFunctionCrypt(pLngMessage,pLngKey) 
  16.  
  17. OnErrorResumeNext 
  18.  
  19. DimlLngMod 
  20.  
  21. DimlLngResult 
  22.  
  23. DimlLngIndex 
  24.  
  25. IfpLngKeyMod2=0Then 
  26.  
  27. lLngResult=1 
  28.  
  29. ForlLngIndex=1TopLngKey/2 
  30.  
  31. lLngMod=(pLngMessage^2)ModModulus 
  32.  
  33. 'Modmayerroronkeygeneration 
  34.  
  35. lLngResult=(lLngMod*lLngResult)ModModulus 
  36.  
  37. IfErrThenExitFunction 
  38.  
  39. Next 
  40.  
  41. Else 
  42.  
  43. lLngResult=pLngMessage 
  44.  
  45. ForlLngIndex=1TopLngKey/2 
  46.  
  47. lLngMod=(pLngMessage^2)ModModulus 
  48.  
  49. OnErrorResumeNext 
  50.  
  51. 'Modmayerroronkeygeneration 
  52.  
  53. lLngResult=(lLngMod*lLngResult)ModModulus 
  54.  
  55. IfErrThenExitFunction 
  56.  
  57. Next 
  58.  
  59. EndIf 
  60.  
  61. Crypt=lLngResult 
  62.  
  63. EndFunction 
  64.  
  65. PublicFunctionEncode(ByValpStrMessage) 
  66.  
  67. DimlLngIndex 
  68.  
  69. DimlLngMaxIndex 
  70.  
  71. DimlBytAscii 
  72.  
  73. DimlLngEncrypted 
  74.  
  75. lLngMaxIndex=Len(pStrMessage) 
  76.  
  77. IflLngMaxIndex=0ThenExitFunction 
  78.  
  79. ForlLngIndex=1TolLngMaxIndex 
  80.  
  81. lBytAscii=Asc(Mid(pStrMessage,lLngIndex,1)) 
  82.  
  83. lLngEncrypted=Crypt(lBytAscii,PublicKey) 
  84.  
  85. Encode=Encode&NumberToHex(lLngEncrypted,4) 
  86.  
  87. Next 
  88.  
  89. EndFunction 
  90.  
  91. PublicFunctionDecode(ByValpStrMessage) 
  92.  
  93. DimlBytAscii 
  94.  
  95. DimlLngIndex 
  96.  
  97. DimlLngMaxIndex 
  98.  
  99. DimlLngEncryptedData 
  100.  
  101. Decode="" 
  102.  
  103. lLngMaxIndex=Len(pStrMessage) 
  104.  
  105. ForlLngIndex=1TolLngMaxIndexStep4 
  106.  
  107. lLngEncryptedData=HexToNumber(Mid(pStrMessage,lLngIndex,4)) 
  108.  
  109. lBytAscii=Crypt(lLngEncryptedData,PrivateKey) 
  110.  
  111. Decode=Decode&Chr(lBytAscii) 
  112.  
  113. Next 
  114.  
  115. EndFunction 
  116.  
  117. PrivateFunctionNumberToHex(ByRefpLngNumber,ByRefpLngLength) 
  118.  
  119. NumberToHex=Right(String(pLngLength,"0")&Hex(pLngNumber),pLngLength) 
  120.  
  121. EndFunction 
  122.  
  123. PrivateFunctionHexToNumber(ByRefpStrHex) 
  124.  
  125. HexToNumber=CLng("&h"&pStrHex) 
  126.  
  127. EndFunction 
  128.  
  129. EndClass 
  130.  
  131. %> 

test.asp

  1. <% 
  2.  
  3. functionEncryptstr(Message) 
  4.  
  5. DimLngKeyE 
  6.  
  7. DimLngKeyD 
  8.  
  9. DimLngKeyN 
  10.  
  11. DimStrMessage 
  12.  
  13. DimObjRSA 
  14.  
  15. LngKeyE="32823" 
  16.  
  17. LngKeyD="20643" 
  18.  
  19. LngKeyN="29893" 
  20.  
  21. StrMessage=Message 
  22.  
  23. SetObjRSA=NewclsRSA 
  24.  
  25. ObjRSA.PublicKey=LngKeyE 
  26.  
  27. ObjRSA.Modulus=LngKeyN 
  28.  
  29. Encryptstr=ObjRSA.Encode(StrMessage) 
  30.  
  31. SetObjRSA=Nothing 
  32.  
  33. endfunction 
  34.  
  35. functiondecryptstr(Message) 
  36.  
  37. DimLngKeyE 
  38.  
  39. DimLngKeyD 
  40.  
  41. DimLngKeyN 
  42.  
  43. DimStrMessage 
  44.  
  45. DimObjRSA 
  46.  
  47. LngKeyE="32823" 
  48.  
  49. LngKeyD="20643" 
  50.  
  51. LngKeyN="29893" 
  52.  
  53. StrMessage=Message 
  54.  
  55. SetObjRSA=NewclsRSA 
  56.  
  57. ObjRSA.PrivateKey=LngKeyD 
  58.  
  59. ObjRSA.Modulus=LngKeyN 
  60.  
  61. decryptstr=ObjRSA.Decode(StrMessage) 
  62.  
  63. SetObjRSA=Nothing 
  64.  
  65. endfunction 
  66.  
  67. dimlast,first 
  68.  
  69. first="sohu" 
  70.  
  71. Response.Write"加密前为:"&first 
  72.  
  73. last=Encryptstr(first) 
  74.  
  75. Response.Write"加密后为"&last 
  76.  
  77. Response.Write"解密后为"&decryptstr(last) 
  78.  
  79. %>