2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面,了解更多关于这个平台的信息。

0
ClojureScript

{{random-uuid}} 目前使用 {{Math/random}} 通过 {{rand-int}} 生成用于 v4 UUID 的随机数。此补丁旨在使用可用的加密强度伪随机数生成器(伪随机数生成器)。

所用函数包括
{{window.crypto.getRandomValues}} 在大多数浏览器中
{{window.msCrypto.getRandomValues}} 在 IE11
* 在不支持前者的浏览器中或如果 Node.js 上的加密模块不可用时,{{Math/random}}

目前未使用
* 在 Node.js 上使用 {{crypto.randomBytes}}

Google Closure 似乎不提供特性检测或加密 API 的包装器,因此附加的补丁建议基于特性检测实现垫片。

一个开放问题是如何使 Node.js 的 {{crypto}} 模块可用,因为 ClojureScript 的 {{core.cljs}} 似乎没有条件 {{require}} Node.js 模块,也许应该保持这种方式。

17 答案

0

评论者:mfikes

如果将 0008-CLJS-2386-fix-ie.patch 应用到 master,我得到以下结果

cljs.user=> (random-uuid) 执行错误(错误)在 (<cljs repl>:1)。只能在 Crypto 的实例上调用 Crypto.getRandomValues

0
参考: https://clojure.atlassian.net/browse/CLJS-2386 (由 abp 报告)
...