如何解决如何在 jsbn 打字稿中访问 SecureRandom?
我以前通过这种方式访问 jsbn.js 中的 SecureRandom
var jsbn = require('jsbn');
var SecureRandom = jsbn.SecureRandom;
var secureRandom = new SecureRandom();
secureRandom.nextBytes(x);
如何在jsbn.ts中访问它?由于导入的功能似乎有限
import jsbn,{BigInteger,RandomGenerator as SecureRandom} from "jsbn";
package.json
"dependencies": {
"jsbn": "^1.1.0"
},"devDependencies": {
"@types/jsbn": "^1.2.29",}
谢谢。
解决方法
@types/jsbn npm 包只提供RandomGenerator 的接口声明,不导出 SecureRandom:
export interface RandomGenerator {
nextBytes(bytes: number[]): void;
}
您应该使用 prng 作为 WebAPI Crypto getRandomValues()
实现该接口和此 nextBytes 方法例如:
class SecureRandomGenerator implements RandomGenerator {
private static getRandomBytes(size: number): Uint8Array {
// User agent WebAPI Crypto
if (typeof window !== "undefined" && window.crypto && window.crypto.getRandomValues) {
return window.crypto.getRandomValues(new Uint8Array(size));
}
throw new Error("Web API Crypto is not available");
}
public nextBytes(bytes: number[]): void {
const generatedBytes = SecureRandomGenerator.getRandomBytes(bytes.length);
for (let i = 0; i < bytes.length; i++) {
bytes[i] = generatedBytes[i];
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。