网络编程
位置:首页>> 网络编程>> Asp编程>> 基于RSA算法在asp中加密与解密对应的函数

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

作者:hnsoso 来源:动网 发布时间:2007-11-07 21:39:00 

标签:加密,解密,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) 
%>


0
投稿

猜你喜欢

  • 扪心自问,你真正了解你卖给用户的是什么玩意么?你所认为革命性的,一定会震惊世界的功能、特色,用户真的买单么?我的意思是,我们总是习惯性的忘记
  • 阅读上一篇:javascript 45种缓动效果(一)这部分对原先的缓动函数进行抽象化,并结合缓动公式进行强化。成品的效果非常惊人逆天。走过
  • Ajax的流行给用户体验带来了很大程序的提升,而“注册“这项做为互联网最常用到的功能也自然而然的成为Ajax最常光顾的地方,实时判断用户输入
  • SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项。当一个技术支持人员要求你按照某种方式调整一个选项、而另一个技术支持
  • 一个不错的二级联动下拉菜单源码,您一定会用得到的。运行代码:<html><head><title>Lis
  • 很简单,我们用两个文件就可以实现这一功能:login.htm<% @ Language=JavaScript&nb
  • 在ASP中,也能让XML发挥其优点。例如像.NET那样写一个XML配置文件,在程序中读取,或者将一些数据量不大又经常访问的数据写入到XML中
  • CacheControl 属性设置是否可缓存由 ASP 生成的输出。默认地,代理服务器不会保持缓存副本。语法:response.CacheC
  • 不同于行级或页级锁定的选项:· 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作。这明数据库或表支
  • 内容摘要:当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页
  • 在使用ASP来进行后端的数据合法性校验的时候,有些人为满足不同环境下面的数据校验,编写了很多的函数来实现,比如,我们想要校验用户输入的URL
  • asp如何实现当前月份距离以前某个时间的月份数 如今天是2011年1月份,我想知道离2010年3月,计算这中间一共是几个月 最佳答案 <
  • 今天 大白 问了一个关于CSS权重的问题:关于选择器权重的问题 。class的权重是10 标签权重是 1 。比如说 p span{} 权重是
  • MySQL是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中
  • 本周的豆知识分享就来深入研究一下window.event对象。请先看看下边的代码片断。 <button id=”btn”&g
  • 目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Stand ard C
  • 做教育业的网站,会将此遇到这个问题:如何在网页上显示音标?音标为什么显示为乱字符?等等类似的问题。前两天做沪江网某英语页面的时候也碰到了这个
  • COM接口VC实现,接口: [id(1), helpstring("method Test"
  • 斜角导航条看上去立体感比较强,但实现起来比较麻烦;这是前几天写的一个测试代码,实现时,本来想用简单的图片加负数来实现;但GIF图片对半透明的
  • 首先得抛出个重要的前提观点,大屏幕、宽屏幕根本不是为方便“扫视”准备的。所以说以内容为基础的网站设计不用考虑超宽、超大的场景,甚至包括服务类
手机版 网络编程 asp之家 www.aspxhome.com