在ColdFusion中生成密码盐,相当于.NET Membership密码盐

3
我一直在寻找一个类似于.NET的下面方法/函数的ColdFusion等价物。我有ASP会员表与在数据库上运行的ASP.NET站点。相同的数据库用于ColdFusion站点。想法是使用当前数据库开发一个带有ASP站点的ColdFusion站点。两个站点将并行运行至少3-6个月,允许用户从任意站点连接。创建用户也可以在任意一侧进行。在.NET中,我已经解决了这个问题。但是,在ColdFusion中,我仍然很困惑。
private string GenerateSalt() {
        var buf = new byte[16];
        (new RNGCryptoServiceProvider()).GetBytes(buf);
        return Convert.ToBase64String(buf);
   }
2个回答

3
我找到了一些非常简单的东西。它可能不是同一个加密服务,但是它生成的长度和格式与上面的服务相同。
GenerateSecretKey("AES")

就这么简单。也许将来有人会从中受益。

0

没有纯CF等效项。但是,Java等效项是SecureRandom

密码学强随机数最少符合在FIPS 140-2,加密模块安全要求第4.9.1节中指定的统计随机数生成器测试。此外,SecureRandom必须产生不确定性输出。因此,传递给SecureRandom对象的任何种子材料必须是不可预测的,并且所有SecureRandom输出序列必须是密码学强的,如RFC 1750:安全性的随机性建议。

例子:

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

顺便说一句:您应该能够从 createObject(".net") 调用 RNGCryptoServiceProvider,但是...似乎并不起作用。没有语法错误,但它不会用随机字节填充 buf。不确定这是我自己的错误还是漏洞。 - Leigh
在Java中定义byte[]数组长度是否有限制?此外,如果我传递一组字符的数组(例如[83,34,54,56,34]),那么这种方式生成随机盐是否会更不安全? - espresso_coffee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接