ColdFusion中是否存在PHP函数random_bytes(32)的替代方案?
ColdFusion 18 等效实现PHP random_bytes()的方法
PHP的random_bytes(32)本质是生成32位长度的密码学安全原始二进制伪随机字节串,直接输出时就是你贴出的乱码形态内容,ColdFusion 18有原生方案可以实现完全同等的功能,不需要依赖第三方组件。
优先使用内置专用函数
ColdFusion 18已经内置了generateRandomBytes()函数,专门用于生成加密安全级别的随机字节,传入需要的字节长度即可直接得到对应结果,和PHP函数完全等效的写法如下:<!--- 生成32位加密安全随机二进制字节串 ---> <cfset secureBinData = generateRandomBytes(32)>变量
secureBinData存储的就是原始二进制数据,直接输出就会得到和你给出的PHP输出同类型的乱码结果,可以直接用于加密、签名、令牌生成等场景。兼容低更新版本的Java调用方案
如果你使用的ColdFusion 18未安装后续功能更新、找不到上述内置函数,可以直接调用Java底层的安全随机类实现,效果完全一致,代码如下:<cfset secureRandomIns = createObject("java", "java.security.SecureRandom")> <cfset byteArr = createObject("java", "byte[]").init(32)> <cfset secureRandomIns.nextBytes(byteArr)> <!--- byteArr即为32位长度的加密安全随机二进制字节数据 --->
注意:不要使用普通的
rand()、randomRange()类函数生成安全场景使用的随机数据,这类函数生成的是普通统计学伪随机数,不满足密码学安全要求,和random_bytes()的安全等级不对等。
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

