我过去常常这样访问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",
}谢谢。
发布于 2021-07-07 18:32:20
@types/jsbn npm包只提供RandomGenerator接口的声明,并不导出SecureRandom:
export interface RandomGenerator {
nextBytes(bytes: number[]): void;
}您应该使用作为WebAPI Crypto getRandomValues()的prng来实现该接口和此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];
}
}
}https://stackoverflow.com/questions/67161501
复制相似问题