制作登陆行为时可能需要用到MD5加密用户密码,使用ASP实现这个功能比其他语言稍微麻烦一点,但是也是可行的.

核心代码:

<%
Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32

Private m_lOnBits(30)
Private m_l2Power(30)

Private Function LShift(lValue, iShiftBits)
  If iShiftBits = 0 Then
    LShift = lValue
    Exit Function
  ElseIf iShiftBits = 31 Then
    If lValue And 1 Then
      LShift = &H80000000
    Else
      LShift = 0
    End If
    Exit Function
  ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
    Err.Raise 6
  End If

If (lValue And m_l2Power(31 - iShiftBits)) Then
    LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
  Else
    LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
  End If
End Function

Private Function RShift(lValue, iShiftBits)
  If iShiftBits = 0 Then
    RShift = lValue
    Exit Function
  ElseIf iShiftBits = 31 Then
    If lValue And &H80000000 Then
      RShift = 1
    Else
      RShift = 0
    End If
    Exit Function
  ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
    Err.Raise 6
  End If
 
  RShift = (lValue And &H7FFFFFFE)  m_l2Power(iShiftBits)

If (lValue And &H80000000) Then
    RShift = (RShift Or (&H40000000  m_l2Power(iShiftBits - 1)))
  End If
End Function

Private Function RotateLeft(lValue, iShiftBits)
  RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
End Function

Private Function AddUnsigned(lX, lY)
  Dim lX4
  Dim lY4
  Dim lX8
  Dim lY8
  Dim lResult

lX8 = lX And &H80000000
  lY8 = lY And &H80000000
  lX4 = lX And &H40000000
  lY4 = lY And &H40000000

lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)

If lX4 And lY4 Then
    lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
  ElseIf lX4 Or lY4 Then
    If lResult And &H40000000 Then
      lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
    Else
      lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
    End If
  Else
    lResult = lResult Xor lX8 Xor lY8
  End If

AddUnsigned = lResult
End Function

Private Function md5_F(x, y, z)
  md5_F = (x And y) Or ((Not x) And z)
End Function

Private Function md5_G(x, y, z)
  md5_G = (x And z) Or (y And (Not z))
End Function

Private Function md5_H(x, y, z)
  md5_H = (x Xor y Xor z)
End Function

Private Function md5_I(x, y, z)
  md5_I = (y Xor (x Or (Not z)))
End Function

Private Sub md5_FF(a, b, c, d, x, s, ac)
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
  a = RotateLeft(a, s)
  a = AddUnsigned(a, b)
End Sub

Private Sub md5_GG(a, b, c, d, x, s, ac)
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
  a = RotateLeft(a, s)
  a = AddUnsigned(a, b)
End Sub

Private Sub md5_HH(a, b, c, d, x, s, ac)
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
  a = RotateLeft(a, s)
  a = AddUnsigned(a, b)
End Sub

Private Sub md5_II(a, b, c, d, x, s, ac)
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
  a = RotateLeft(a, s)
  a = AddUnsigned(a, b)
End Sub

Private Function ConvertToWordArray(sMessage)
  Dim lMessageLength
  Dim lNumberOfWords
  Dim lWordArray()
  Dim lBytePosition
  Dim lByteCount
  Dim lWordCount
 
  Const MODULUS_BITS = 512
  Const CONGRUENT_BITS = 448
 
  lMessageLength = Len(sMessage)
 
  lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS)  BITS_TO_A_BYTE))  (MODULUS_BITS  BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS  BITS_TO_A_WORD)
  ReDim lWordArray(lNumberOfWords - 1)
 
  lBytePosition = 0
  lByteCount = 0
  Do Until lByteCount >= lMessageLength
    lWordCount = lByteCount  BYTES_TO_A_WORD
    lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
    lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
    lByteCount = lByteCount + 1
  Loop

lWordCount = lByteCount  BYTES_TO_A_WORD
  lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE

lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)

lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
  lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
 
  ConvertToWordArray = lWordArray
End Function

Private Function WordToHex(lValue)
  Dim lByte
  Dim lCount
 
  For lCount = 0 To 3
    lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
    WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
  Next
End Function

Public Function MD5(sMessage)
  m_lOnBits(0) = CLng(1)
  m_lOnBits(1) = CLng(3)
  m_lOnBits(2) = CLng(7)
  m_lOnBits(3) = CLng(15)
  m_lOnBits(4) = CLng(31)
  m_lOnBits(5) = CLng(63)
  m_lOnBits(6) = CLng(127)
  m_lOnBits(7) = CLng(255)
  m_lOnBits(8) = CLng(511)
  m_lOnBits(9) = CLng(1023)
  m_lOnBits(10) = CLng(2047)
  m_lOnBits(11) = CLng(4095)
  m_lOnBits(12) = CLng(8191)
  m_lOnBits(13) = CLng(16383)
  m_lOnBits(14) = CLng(32767)
  m_lOnBits(15) = CLng(65535)
  m_lOnBits(16) = CLng(131071)
  m_lOnBits(17) = CLng(262143)
  m_lOnBits(18) = CLng(524287)
  m_lOnBits(19) = CLng(1048575)
  m_lOnBits(20) = CLng(2097151)
  m_lOnBits(21) = CLng(4194303)
  m_lOnBits(22) = CLng(8388607)
  m_lOnBits(23) = CLng(16777215)
  m_lOnBits(24) = CLng(33554431)
  m_lOnBits(25) = CLng(67108863)
  m_lOnBits(26) = CLng(134217727)
  m_lOnBits(27) = CLng(268435455)
  m_lOnBits(28) = CLng(536870911)
  m_lOnBits(29) = CLng(1073741823)
  m_lOnBits(30) = CLng(2147483647)
 
  m_l2Power(0) = CLng(1)
  m_l2Power(1) = CLng(2)
  m_l2Power(2) = CLng(4)
  m_l2Power(3) = CLng(8)
  m_l2Power(4) = CLng(16)
  m_l2Power(5) = CLng(32)
  m_l2Power(6) = CLng(64)
  m_l2Power(7) = CLng(128)
  m_l2Power(8) = CLng(256)
  m_l2Power(9) = CLng(512)
  m_l2Power(10) = CLng(1024)
  m_l2Power(11) = CLng(2048)
  m_l2Power(12) = CLng(4096)
  m_l2Power(13) = CLng(8192)
  m_l2Power(14) = CLng(16384)
  m_l2Power(15) = CLng(32768)
  m_l2Power(16) = CLng(65536)
  m_l2Power(17) = CLng(131072)
  m_l2Power(18) = CLng(262144)
  m_l2Power(19) = CLng(524288)
  m_l2Power(20) = CLng(1048576)
  m_l2Power(21) = CLng(2097152)
  m_l2Power(22) = CLng(4194304)
  m_l2Power(23) = CLng(8388608)
  m_l2Power(24) = CLng(16777216)
  m_l2Power(25) = CLng(33554432)
  m_l2Power(26) = CLng(67108864)
  m_l2Power(27) = CLng(134217728)
  m_l2Power(28) = CLng(268435456)
  m_l2Power(29) = CLng(536870912)
  m_l2Power(30) = CLng(1073741824)

Dim x
  Dim k
  Dim AA
  Dim BB
  Dim CC
  Dim DD
  Dim a
  Dim b
  Dim c
  Dim d
 
  Const S11 = 7
  Const S12 = 12
  Const S13 = 17
  Const S14 = 22
  Const S21 = 5
  Const S22 = 9
  Const S23 = 14
  Const S24 = 20
  Const S31 = 4
  Const S32 = 11
  Const S33 = 16
  Const S34 = 23
  Const S41 = 6
  Const S42 = 10
  Const S43 = 15
  Const S44 = 21

x = ConvertToWordArray(sMessage)
 
  a = &H67452301
  b = &HEFCDAB89
  c = &H98BADCFE
  d = &H10325476

For k = 0 To UBound(x) Step 16
    AA = a
    BB = b
    CC = c
    DD = d
 
    md5_FF a, b, c, d, x(k + 0), S11, &HD76AA478
    md5_FF d, a, b, c, x(k + 1), S12, &HE8C7B756
    md5_FF c, d, a, b, x(k + 2), S13, &H242070DB
    md5_FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
    md5_FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
    md5_FF d, a, b, c, x(k + 5), S12, &H4787C62A
    md5_FF c, d, a, b, x(k + 6), S13, &HA8304613
    md5_FF b, c, d, a, x(k + 7), S14, &HFD469501
    md5_FF a, b, c, d, x(k + 8), S11, &H698098D8
    md5_FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
    md5_FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
    md5_FF b, c, d, a, x(k + 11), S14, &H895CD7BE
    md5_FF a, b, c, d, x(k + 12), S11, &H6B901122
    md5_FF d, a, b, c, x(k + 13), S12, &HFD987193
    md5_FF c, d, a, b, x(k + 14), S13, &HA679438E
    md5_FF b, c, d, a, x(k + 15), S14, &H49B40821
 
    md5_GG a, b, c, d, x(k + 1), S21, &HF61E2562
    md5_GG d, a, b, c, x(k + 6), S22, &HC040B340
    md5_GG c, d, a, b, x(k + 11), S23, &H265E5A51
    md5_GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
    md5_GG a, b, c, d, x(k + 5), S21, &HD62F105D
    md5_GG d, a, b, c, x(k + 10), S22, &H2441453
    md5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681
    md5_GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
    md5_GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
    md5_GG d, a, b, c, x(k + 14), S22, &HC33707D6
    md5_GG c, d, a, b, x(k + 3), S23, &HF4D50D87
    md5_GG b, c, d, a, x(k + 8), S24, &H455A14ED
    md5_GG a, b, c, d, x(k + 13), S21, &HA9E3E905
    md5_GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
    md5_GG c, d, a, b, x(k + 7), S23, &H676F02D9
    md5_GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
     
    md5_HH a, b, c, d, x(k + 5), S31, &HFFFA3942
    md5_HH d, a, b, c, x(k + 8), S32, &H8771F681
    md5_HH c, d, a, b, x(k + 11), S33, &H6D9D6122
    md5_HH b, c, d, a, x(k + 14), S34, &HFDE5380C
    md5_HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
    md5_HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
    md5_HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
    md5_HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
    md5_HH a, b, c, d, x(k + 13), S31, &H289B7EC6
    md5_HH d, a, b, c, x(k + 0), S32, &HEAA127FA
    md5_HH c, d, a, b, x(k + 3), S33, &HD4EF3085
    md5_HH b, c, d, a, x(k + 6), S34, &H4881D05
    md5_HH a, b, c, d, x(k + 9), S31, &HD9D4D039
    md5_HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
    md5_HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
    md5_HH b, c, d, a, x(k + 2), S34, &HC4AC5665
 
    md5_II a, b, c, d, x(k + 0), S41, &HF4292244
    md5_II d, a, b, c, x(k + 7), S42, &H432AFF97
    md5_II c, d, a, b, x(k + 14), S43, &HAB9423A7
    md5_II b, c, d, a, x(k + 5), S44, &HFC93A039
    md5_II a, b, c, d, x(k + 12), S41, &H655B59C3
    md5_II d, a, b, c, x(k + 3), S42, &H8F0CCC92
    md5_II c, d, a, b, x(k + 10), S43, &HFFEFF47D
    md5_II b, c, d, a, x(k + 1), S44, &H85845DD1
    md5_II a, b, c, d, x(k + 8), S41, &H6FA87E4F
    md5_II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
    md5_II c, d, a, b, x(k + 6), S43, &HA3014314
    md5_II b, c, d, a, x(k + 13), S44, &H4E0811A1
    md5_II a, b, c, d, x(k + 4), S41, &HF7537E82
    md5_II d, a, b, c, x(k + 11), S42, &HBD3AF235
    md5_II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
    md5_II b, c, d, a, x(k + 9), S44, &HEB86D391
 
    a = AddUnsigned(a, AA)
    b = AddUnsigned(b, BB)
    c = AddUnsigned(c, CC)
    d = AddUnsigned(d, DD)
  Next
 
  MD5=LCase(WordToHex(b) & WordToHex(c))
End Function
%>

使用方法:

1. 将以上代码另存为 md5.asp

2. 在登陆页面 login.asp 使用md5

(1) 页首引入md5.asp
<!--#include file="md5.asp" -->

(2) 对登陆表单添加登陆行为,注意红色部分代码
... ... ...
... ... ...

<%
Dim login__strUserID
login__strUserID = "x"
if (Request.Form("UserID") <> "") then login__strUserID = Request.Form("UserID")
%> <%
Dim login__strPassword
login__strPassword = "1"
if (Request.Form("Password") <> "") then login__strPassword = Request.Form("Password")
%> <%
set login = Server.CreateObject("ADODB.Recordset")
login.ActiveConnection = MM_qwqw_STRING
login.Source = "SELECT * FROM Reg WHERE User = '" + Replace(login__strUserID, "'", "''") + "' AND Pass = '" + md5(trim(replace(login__strPassword, "'", "''"))) + "'"
login.CursorType = 0
login.CursorLocation = 2
login.LockType = 3
login.Open()
login_numRows = 0
%>
... ... ...
... ... ...

3. 在注册页面使用 md5

(1) 页首引入md5.asp
<!--#include file="md5.asp" -->

(2) 使用command插入记录,插入前对密码加密,注意红色部分代码
... ... ...
... ... ...
<%
if(Request.Form("Pass") <> "") then Command_pass = md5(Request.Form("Pass"))
%>
<%
set Command = Server.CreateObject("ADODB.Command")
Command.ActiveConnection = MM_qwqw_STRING
Command.CommandText = "INSERT INTO Reg (User, Pass) VALUES ('" + Replace(Command_User, "'", "''") + "','" + Replace(Command_pass, "'", "''") + "') "
Command.CommandType = 1
Command.CommandTimeout = 0
Command.Prepared = true
Command.Execute()
Response.Redirect "ok.asp"
else
Response.Redirect "error.asp"
End If
%>
... ... ...
... ... ...

总结: 页面中引入md5.asp 然后对目标字符串使用md5()即可.

转载于:https://www.cnblogs.com/JemBai/archive/2008/07/29/1255747.html

ASP下使用md5加密注册信息相关推荐

  1. ASP.Net中MD5加密-16位32位

    public string md5(string str,int code) { if(code==16) //16位MD5加密(取32位加密的9~25字符) { return System.Web. ...

  2. C# js asp.net 字符串MD5加密GetMD5Hash

    杨中科老师 C# /// <summary>/// 把字符转换成MD5/// </summary>/// <param name="input"> ...

  3. JAVA MD5加密用户信息

    关键核心代码 将用户信息转换为MD5值的时候我们需要使用java.security.MessageDigest类 import java.security.MessageDigest; import ...

  4. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...

    在我们后台登陆的时候,有 用户名,密码和验证码3个必选项,所以我们托3个验证控件过来 例如这里,如果没有填写用户名,当点提交的时候,显示 红色的  * 号,并且弹出一个 alert 效果如下     ...

  5. 【Unity】如何使用MD5加密方式传递资料

    在实际专案中, 如果需要用到资料传递, 可以利用 MD5 来为资料进行加密,考虑到有些人还不会,下面就给大家介绍下 Unity MD5 加密,一起来看看吧. 实际利用如下: 先建立 CreateMD5 ...

  6. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)

    MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e)     {         //获取验 ...

  7. qt实现程序密钥注册功能,MD5加密+AES加密,并实现一台电脑系统一个密钥

    qt实现了一个给自己软件加密的功能. 原理是: 需要被注册的软件第一次运行的时候,在系统的注册表里面注册一个键值,如下: 这个值作为生成密钥的用户识别号,然后生成密钥文件key.db,把这个key.d ...

  8. 登录与注册时两次md5加密过程详解

    1 当前端传送密码到后端时候,需要进行两次MD5加密,登录和注册时的加解密流程是怎么样的? 前端和后端加密都可以规定使用密码的某几位作为盐进行加解密操作,而这种约定俗成的盐选取操作只有程序员自己知道, ...

  9. ASP使用MD5加密

    1. md5.asp文件 <% ''''''''''''''''''''''''''''''''''''''''''''''''' ' <p>Title: </p>    ...

最新文章

  1. 读书笔记:《少的力量》
  2. windows下vs2013使用C++访问redis
  3. java为什么要初始化_JAVA中到底要怎么样初始化
  4. SQL SERVER 查询表字段中是否有汉字
  5. system.setin_Java System类setIn()方法及示例
  6. [译]第三章:什么是组织结构
  7. [SecureCRT] 解决 securecrt failed to open the host key database file 的问题
  8. Hive远程模式安装指导
  9. 猫扑网娱乐门户的猫派营销
  10. matlab画模拟信号图,【 MATLAB 】MATLAB 实现模拟信号采样后的重建(一)
  11. 【debug】Support for password authentication was removed on August 13, 2021.解决
  12. php过滤微信表情符号
  13. java 纳秒_如何在Java 8中使用Date API达到精确的纳秒精...
  14. Android 一个TextView中设置文字不同字体大小和颜色的最完整方法
  15. linux引导过程与服务控制
  16. 【微信小程序】判断手机号是否合法
  17. Oracle EBS GL日记账批“选定以过账”状态数据修复
  18. 慕课网——MySQL优化
  19. Steamcommunity302使用教程介绍
  20. vue2 + elementui 日期时间选择器 禁止选择当前时间之前的日期及时间,并添加相应校验规则

热门文章

  1. 程序员访谈_可以用PHP编写出色的应用程序-访谈系列
  2. HAL库串口FE帧错误处理方法
  3. 日常英文缩写以及杂记
  4. 提取图像中颜色交界处的坐标
  5. 机器语言-汇编语言-高级语言各自优缺点
  6. 服务器Linux系统安装 制作CentOS 7.6 U盘启动
  7. python for循环加速_干货总结,24招加速你的Python代码,值得收藏
  8. 多核学习工具箱Shogun的手动编译过程
  9. 读《了不起的盖兹比》于海生译版 有感
  10. WELL HSR找标识行动起航 - 跨行业国际明星巨匠为“WELL 健康-安全评价”代言