处理在 SQL Server 和经典 ASP 中存储为 varbinary 的哈希密码

2024-02-20

All,

提前抱歉 - 对于以下大多数主题(SQL、ASP),我都是新手。反正...

我有一个非常简单的网络应用程序,要求用户使用用户名和密码登录。

前端创建密码的加盐 SHA1 哈希值,并将其(与用户名一起)发布到 ASP 页面。

该 ASP 页获取数据,调用 SQL Server 数据库中的存储过程,并传递用户名和散列密码;存储过程将信息写入“用户”表。

表中密码列的类型是varbinary。

据我所知,当 ASP 获取密码(password = Request.Form("password"))时,它是一个字符串。

如果我这样创建查询,我可以“欺骗”SQL Server 将其作为 varbinary 处理:

query = "EXEC sp_ save user @username='" 和用户名 & "', @password=0x" & 密码

IOW - 我在密码字符串前面添加了“0x”。

但是,我读到使用参数化查询是更好的做法:

例如: SET objParam = objCommand.CreateParameter("@password",204, 1, 40, 密码)

但是,这会失败,因为参数应该是二进制 (204),但密码是字符串。

那么,如何将“4a5e6a8d521ed487b81c91e131cf27e8dae9b783”这样的字符串转换为 ASP 中的二进制文件?

提前谢谢了!


我记得那些日子我常常为这种事情敲头。我建议您升级到 ASP.Net,但同时以下代码 (VBScript) 应该可以满足您的需求:

<%

Dim result

main()

function main()

    Dim userName : userName = "Martin"
    Dim data : data = "4a5e6a8d521ed487b81c91e131cf27e8dae9b783"

    Dim db: Set db = Server.CreateObject("ADODB.Connection")
    db.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=password1;Initial Catalog=Test;Data Source=(local)"

    Dim cmd : Set cmd = Server.CreateObject("ADODB.Command")
    cmd.ActiveConnection = db

    cmd.CommandText = "dbo.[sp_save_user]"
    cmd.CommandType = 4    
    cmd.Parameters.Append cmd.CreateParameter("@UserName", 200, 1, 50, userName)
    Dim bytes : bytes = stringToBinary(data)
    cmd.Parameters.Append cmd.CreateParameter("@Password", 204, 1, LenB(bytes), bytes)
    cmd.Execute()

    db.Close

    result = "done"

end function

function stringToBinary(str)
    dim ahex
    for i=0 to len(str) - 1 step 2
        Dim strDigit1 
        Dim strDigit2
        strDigit1 = Ucase(Mid(str, i+1, 1))
        strDigit2 = Ucase(Mid(str, i+2, 1))

        Dim byteDigit1
        Dim byteDigit2
        byteDigit1 = InStr("0123456789ABCDEF", strDigit1) - 1
        byteDigit2 = InStr("0123456789ABCDEF", strDigit2) - 1

        ahex = ahex & ChrB((byteDigit1 * 16) + byteDigit2)
    next   

    stringToBinary = ahex          
end function
%>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <h1><%= result %></h1>
    </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理在 SQL Server 和经典 ASP 中存储为 varbinary 的哈希密码 的相关文章

  • 单个 sql 查询可以处理 sql server 中的 null 或值日期范围

    使用 SQL Server 2008 我有一个存储过程 其中开始日期和结束日期作为日期范围的输入参数 寻找一个singlesql 查询 其中在 where 子句中有一个开始日期和结束日期 可以处理日期均为空或都有值的两种情况 我不想使用 I
  • 选择表中的人员并排除妻子,但合并他们的名字

    我有一张桌子Person PersonID FirstName LastName 1 John Doe 2 Jane Doe 3 NoSpouse Morales 4 Jonathan Brand 5 Shiela Wife And a R
  • 有关于 VBScript 正则表达式对象 (RegExp) 的好文档吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们都知道每个正则表达式实现都有其自身的特点 我需要在使用 COM 自动化的应用程序中使用 Micros
  • SQL查询多行变成单行

    有什么方法可以将通常返回具有相同值的多行的 SQL 查询更改为单行吗 例如 如果我现有的查询返回以下内容 ColA ColB 1 AA 1 BB 1 CC 2 AA 3 AA 我可以将查询更改为仅返回 3 行 并将 1 的第二个和第三个结果
  • ASP Readline 非标准行结尾

    我正在使用 ASP 经典版ReadLine 文件系统对象的功能 一切都进展顺利 直到有人在 Mac 上使用 TextEdit 制作了导入文件 行结尾不相同 并且ReadLine 读入整个文件 而不是一次只读一行 有处理这个问题的标准方法吗
  • C# 事务中的事务

    我正在使用 C 将发票的平面文件导入到数据库中 如果遇到问题 我将使用 TransactionScope 回滚整个操作 这是一个棘手的输入文件 因为一行不一定等于一条记录 它还包括链接记录 发票将包含标题行 行项目和总计行 有些发票需要跳过
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • 如何跟踪数据库连接泄漏

    我们有一个应用程序似乎存在连接泄漏 SQL Server 表示已达到最大池大小 我独自一人在我的开发机器上 显然 只需导航应用程序 我就会触发此错误 SQL Server 活动监视器显示大量正在使用我的数据库的进程 我想查找哪些文件打开连接
  • AWS DMS 无法截断 SQL 事务日志

    我们正在运行 AWS DMS 以 SQL 作为源 以 DynamoDB 作为目标 我们很难截断事务日志 我们看到每个 AWS DMS 有 2 个 SQL 任务 如下所示 begin transaction WVGLQ7HFWFWJCCPK4
  • SQL Server、ISABOUT、加权项

    我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的 这是我目前所在的位置 每个查询返回以下行 查询 1 权重 1 初始排名 SELECT FROM CONTAINSTABLE documentParts ti
  • 动态/条件 SQL 连接?

    我在 MSSQL 表 TableB 中有数据 其中 dbo tableB myColumn 在特定日期后更改格式 我正在做一个简单的连接到该表 Select dbo tableB theColumnINeed from dbo tableA
  • 动态SQL生成列名?

    我有一个查询 我正在尝试将行值转换为列名称 目前我正在使用SUM Case As ColumnName 声明 像这样 SELECT SKU1 SUM Case When Sku2 157 Then Quantity Else 0 End A
  • 使用单个查询和每用户密码盐进行用户登录

    我决定使用存储在数据库中的每用户盐来实现用户登录 盐作为密码的前缀 该密码使用 SHA 进行哈希处理并存储在数据库中 过去 当我不使用盐时 我会使用典型的方法 使用用户输入的用户名和密码来计算查询返回的行数 然而 对于每个用户的盐 您需要先
  • 在 MySQL 表中存储用户密码的最佳 PHP 哈希方法?

    我已经阅读 Stack Overflow 问题大约 15 分钟了 每一个问题似乎都与我之前读到的问题相矛盾 Bcrypt SHA1 MD5 等 我目前对我的密码进行 MD5 但我想让我的数据库在发生泄露时更加安全 我知道这个问题已经被问了一
  • TSQL 定义临时表(或表变量)而不定义架构?

    有没有一种方法可以定义临时表而无需预先定义其架构 实际上 使用表 VARIABLE 内存表 是最佳方法 table 在临时数据库中创建一个表 而 table 是全局的 两者都具有磁盘命中 考虑交易数量所经历的放缓 打击 CREATE PRO
  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心
  • 在 SQL Server 数据库之间传递用户定义的表类型

    我在 SQL Server 的一个数据库中有一个用户定义的表类型 我们称之为DB1 我的类型的定义非常简单 仅包含 2 列 创建我的类型的脚本如下 CREATE TYPE dbo CustomList AS TABLE ID int Dis
  • 插入并发问题-多线程环境

    我有一个问题 即使用完全相同的参数在完全相同的时间调用相同的存储过程 存储过程的目的是获取记录 如果存在 或创建并获取记录 如果不存在 问题是两个线程都在检查记录是否存在并报告错误 然后都插入新记录 在数据库中创建重复记录 我尝试将操作保留
  • 获取下一个ID而不插入行

    在 SQL SQL Server 中是否可以在插入行之前从表中的标识列检索下一个 ID 整数 而无需实际插入行 如果删除了最近的行 则这不一定是最高 ID 加 1 我问这个问题是因为我们偶尔需要用新行更新实时数据库 行的 ID 在我们的代码

随机推荐

  • matplotlib matshow xtick 顶部和底部标签

    我正在尝试可视化名称共现矩阵 这个版本工作正常 import pandas as pd import numpy as np import string import matplotlib pyplot as plt n 10 names
  • 在 GitHub 上以协作者身份编辑文件

    我正在尝试对我被邀请作为合作者的 GitHub 存储库进行更改 我可以创建新文件并修改它们 但是当我尝试对现有文件进行任何更改时 我看到这条消息说 您必须在分支上才能对该文件进行或建议更改 然后 只有在通过终端推送提交后 我才能在 GitH
  • FEATURE_ACTIVITY_TRANSITIONS 与 FEATURE_CONTENT_TRANSITIONS

    我无法理解这两者之间的区别Window http developer android com reference android view Window html标志 但我不能 100 确定何时需要使用每一个以及为什么 的文档Window
  • 为什么 Flutter 小部件是不可变的?

    我无法理解为什么 Flutter 对象是不可变的 我在 Flutter 文档中尝试过 但没有那么有帮助 如果有人能帮助我解决这个问题 我将不胜感激 另外 我两天前才开始使用 flutter 非常棒 From https api flutte
  • 如何使用python捕获网络流量[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 python 并尝试抓取我的计算机和站点之间的 HTTP s 流量 其中包括所有传入和传出请求 响应 例如图像和外部调用等
  • @ngrx/store 是可观察到的热还是冷?

    我认为它是一个冷可观察的对象 默认情况下 但在代码或文档中找不到对它的引用 抱歉 如果已经问过这个问题 找不到东西 TLDR这是一个热门的观察点 因为动作主题 https github com ngrx platform blob mast
  • 如何在 vscode 中根据自定义的 launch.json 创建模板?

    对于我的项目 我定制了我的启动 json file 如何将自己的自定义启动配置保存为模板 就像C GDB LLDB 模板 这样我每次打开新文件夹 项目 时都可以轻松地重新使用它 我不想将其添加到下面全局启动配置 https code vis
  • 如何订购淘汰赛绑定?

    我正在使用 Knockout js 我陷入了一个有点奇怪的情况 很难解释 但我正在尝试 如果我不清楚 抱歉 我在单个选择列表上使用自定义绑定和选项绑定
  • 什么是缓冲区?什么是缓冲读和缓冲写?

    今天很长一段时间后我听到了 缓冲区 这个词 想知道是否有人可以很好地概述缓冲区以及它在当今世界的重要性的一些例子 缓冲区通常是内存的一部分 其中包含尚未完全提交到其预期设备的数据 在缓冲 I O 的情况下 通常有一个快速设备和一个慢速设备
  • 尝试使用 KMS 解密 Lambda 函数中的密文会导致超时

    使用 AWS CLI 从命令行解密密文时 密文可以顺利解密 aws kms decrypt ciphertext blob fileb encrypted secrets output text query Plaintext region
  • 寻找最少矩形来覆盖一组矩形而不重叠的算法

    我有一组矩形 我想 减少 该组 以便用最少数量的矩形来描述与原始组相同的区域 如果可能的话 我希望它也能很快 但我更关心的是让矩形的数量尽可能少 我现在有一个在大多数情况下都有效的方法 Currently I start at the to
  • 使用正则表达式替换时,如何保留匹配字符串的一部分?

    I have 12 hello mp3 21 true mp3 35 good mp3 等等作为文本文件中列出的文件名 我只需要用空格替换数字前面的那些点 例如 12 hello mp3 gt 12 hello mp3 如果我将正则表达式设
  • 合并和分割重叠的矩形以生成不重叠的矩形

    我正在寻找如下算法 给定一组可能重叠的矩形 所有矩形都 未旋转 可以统一表示为 左 上 右 下 连音符等 它返回一组最小的 非旋转 不重叠的矩形 占据相同的面积 乍一看似乎很简单 但事实证明很棘手 至少要高效地完成 this ideas p
  • http 连接错误

    您好 我正在尝试从下面给出的链接获取数据 http abovestress com app stress fetch all detail php task fetchtimefromdateanduserid track date 201
  • 使用 Apple M1 自制软件安装 ruby​​-odbc gem 时出现“错误:sql.h 未找到”

    上下文 在 Apple M1 上 自制程序的位置是 opt homebrew not the usual usr local macOS Intel usr local macOS ARM opt homebrew 当我安装 ruby od
  • Crashlytics 未对代码进行反混淆

    我是 Crashlytics 的新手 我遇到了一个问题 它没有对我的堆栈跟踪进行反混淆 根据 Crashlytics 的说法 这应该是自动发生的 它应该使用 apk 中包含的mappings txt 文件来解密堆栈跟踪 我对整个过程有一些疑
  • 如何在CMake中指定编译器?

    我想使用 IAR 编译器 我注意到 CMake 已经有一堆关于这个编译器的文件 https github com jevinskie cmake blob master Modules Compiler IAR cmake https gi
  • 如何在打字稿中对模型接口进行单元测试?

    export interface User name string 我如何对上述接口进行单元测试 以便 Karma 可以在代码覆盖率报告中显示它 我已经尝试创建对象并断言一些属性 但没有成功 测试通过了 但 karma 并未在代码覆盖率报告
  • 如何从 main 方法启动 Vertx 3 Verticle?

    如何从 main 方法启动 Verx 3 Verticle 我已经弄清楚如何从单元测试和入门开始guide http vertx io blog my first vert x 3 application 解释如何构建一个胖罐子 但是我如何
  • 处理在 SQL Server 和经典 ASP 中存储为 varbinary 的哈希密码

    All 提前抱歉 对于以下大多数主题 SQL ASP 我都是新手 反正 我有一个非常简单的网络应用程序 要求用户使用用户名和密码登录 前端创建密码的加盐 SHA1 哈希值 并将其 与用户名一起 发布到 ASP 页面 该 ASP 页获取数据