在ColdFusion中生成与.NET成员身份密码盐等效的密码盐

在ColdFusion中生成与.NET成员身份密码盐等效的密码盐,coldfusion,passwords,asp.net-membership,coldfusion-9,membership-provider,Coldfusion,Passwords,Asp.net Membership,Coldfusion 9,Membership Provider,我一直在为ColdFusion从.NET中搜索以下方法/函数的等效项。我有ASP成员资格表,数据库上运行ASP.NET站点。ColdFusion站点使用相同的数据库。其想法是使用ColdFusion站点使用的当前数据库开发一个ASP站点。这两个站点将并行运行至少3-6个月,允许用户从任何一个站点进行连接。用户的创建也可以在任意一侧进行。从.NET我把它分类了。但在ColdFusion,我仍在挣扎 private string GenerateSalt() { var buf =

我一直在为ColdFusion从.NET中搜索以下方法/函数的等效项。我有ASP成员资格表,数据库上运行ASP.NET站点。ColdFusion站点使用相同的数据库。其想法是使用ColdFusion站点使用的当前数据库开发一个ASP站点。这两个站点将并行运行至少3-6个月,允许用户从任何一个站点进行连接。用户的创建也可以在任意一侧进行。从.NET我把它分类了。但在ColdFusion,我仍在挣扎

private string GenerateSalt() {
        var buf = new byte[16];
        (new RNGCryptoServiceProvider()).GetBytes(buf);
        return Convert.ToBase64String(buf);
   }

我发现了一些非常简单的事情。它可能不是相同的加密服务,但生成的长度和格式与上面的相同

GenerateSecretKey("AES")

就这么简单。也许这会对将来的人有所帮助。

没有纯CF的等价物。然而,java的等价物是:

加密强随机数至少符合 第4.9.1节中规定的统计随机数发生器试验。 此外,SecureRandom必须产生非确定性输出。 因此,传递给SecureRandom对象的任何种子材质都必须 不可预测,并且所有SecureRandom输出序列都必须 加密性强,如中所述

示例:

<cfscript>
    provider = createObject("java", "java.security.SecureRandom").getInstance("SHA1PRNG");
    bytes = javacast("byte[]", listToArray(repeatString("0,", 16)));
    provider.nextBytes( bytes ) ;   
    saltInBase64 = binaryEncode( bytes, "base64");
</cfscript>

provider=createObject(“java”、“java.security.SecureRandom”).getInstance(“SHA1PRNG”);
bytes=javacast(“byte[]”,listToArray(repeatString(“0,”,16));
provider.nextBytes(字节);
saltInBase64=二进制编码(字节,“base64”);

BTW:您应该能够从
createObject(“.net”)
调用
RNGCryptoServiceProvider
,但是。。它似乎不起作用。没有语法错误,但不会使用随机字节填充
buf
。不确定这是我的错误还是bug。javacast byte[]中可以定义的数组长度有限制吗?我还想知道,如果我传递一组字符的数组(例如[83,34,54,56,34]),那么生成随机salt的安全性会降低吗?