Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
coldfusion中的asp.net sql身份验证_Asp.net_Sql_Coldfusion - Fatal编程技术网

coldfusion中的asp.net sql身份验证

coldfusion中的asp.net sql身份验证,asp.net,sql,coldfusion,Asp.net,Sql,Coldfusion,所以,我正在构建一个需要访问最初为asp.net创建的数据库的站点。我想使用与asp.net网站相同的用户名和密码,该网站已经在数据库中。开发人员提到asp.net中使用了默认身份验证 数据库中的密码示例:sywpxnvjlvns8evzviqvosawfq4i= 数据库中的密码salt示例:ruNTdhelY57ghQsTFz/TIg== 以下是我尝试过的: <cfquery name="auth" datasource="ct"> SELECT userid, Password,

所以,我正在构建一个需要访问最初为asp.net创建的数据库的站点。我想使用与asp.net网站相同的用户名和密码,该网站已经在数据库中。开发人员提到asp.net中使用了默认身份验证

数据库中的密码示例:sywpxnvjlvns8evzviqvosawfq4i=

数据库中的密码salt示例:ruNTdhelY57ghQsTFz/TIg==

以下是我尝试过的:

<cfquery name="auth" datasource="ct">
SELECT userid, Password, PasswordSalt from dbo.aspnet_Membership
WHERE userid = '#auth1.userid#'
</cfquery>

<cfset cfHash = toBase64(hash(auth.PasswordSalt & cookie.password, "SHA1"))>

<cfif cfHash eq auth.Password> ...then authenticate etc.
我尝试了几次迭代,但没有成功,结果cfHash太长,如下所示:

Oujboujenji0mzeznjm3mewjk3nzc3odiznuvgmkjcodczoei0qg==

有什么想法吗?

编辑:原始答案并非在所有情况下都有效。大幅修改

可能就是你想要的。总之,两个关键区别是:

使用UTF-16LE编码代替UTF-8 CF的默认值。 对salt和密码字节进行编码,这可能是散列函数所做的:
大约三个月前,coldfusion出现了类似的东西。检查ASP安全设置以查看使用了哪个方案。我认为有一个加密和散列实现。我撒谎,它根本没有标记coldfusion,但它在我的活动提要中:是的,我看到了代码,并试图在coldfusion中复制,但没有用…ASP使用散列方法,而不是加密。。。可能就是你想要的。
<cfscript>
    thePassword = "password12345";
    base64Salt = "l+g9MUcs+cLExeDTNy8M+A==";
    // extract bytes of the salt and password
    saltBytes = binaryDecode(base64Salt, "base64");
    passBytes = charsetDecode(thePassword, "UTF-16LE" );

    // next combine the bytes. note, the returned arrays are immutable, 
    // so we cannot use the standard CF tricks to merge them    
    ArrayUtils = createObject("java", "org.apache.commons.lang.ArrayUtils");
    dataBytes = ArrayUtils.addAll( saltBytes, passBytes );

    // hash binary using java
    MessageDigest = createObject("java", "java.security.MessageDigest").getInstance("SHA-1");
    MessageDigest.update(dataBytes);    
    theBase64Hash = binaryEncode(MessageDigest.digest(), "base64");

    WriteOutput("theBase64Hash= "& theBase64Hash &"<br/>");
</cfscript>