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

欢迎!要了解更多关于此功能如何运作的信息,请参阅关于 页面。

0
ClojureScript

{{random-uuid}} 当前使用 {{Math/random}} 通过 {{rand-int}} 为 v4 UUID 生成随机数。此补丁旨在在可用的情况下使用加密安全的伪随机数生成器 (PRNG)。

使用的函数有
大多数浏览器中的 {{window.crypto.getRandomValues}}
IE11 中的 {{window.msCrypto.getRandomValues}}
* 在不支持前者或 Node.js 上未提供加密模块的浏览器中使用 {{Math/random}}

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

Google Closure 似乎没有提供特征检测或加密 API 的包装器,因此附加的补丁建议基于特征检测的模拟器。

一个悬而未决的问题是 Node.js 的 {{crypto}} 模块如何提供,因为 ClojureScript 的 {{core.cljs}} 似乎没有条件 {{require}} Node.js 模块,也许应该保持这种方式。

17 答案

0

评论者:mfikes

如果在 master 上应用了 0008-CLJS-2386-fix-ie.patch,Safari 中的结果如下

cljs.user=> (random-uuid) 运行时错误 (Error) 在 (<cljs repl>:1)。只能在 Crypto 对象上调用 Crypto.getRandomValues

0
...