首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSBN/Forge能否用于生成RSA私钥/公钥对?

JSBN/Forge能否用于生成RSA私钥/公钥对?
EN

Stack Overflow用户
提问于 2014-12-13 08:52:30
回答 1查看 556关注 0票数 0

查看JSBN,RSAGenerate(B,E)以位长B和公钥E作为参数。这是否意味着公钥只能单独生成并作为参数提供?这是否也意味着Forge不能生成像BigInt http://www.leemon.com/crypto/BigInt.html这样的密钥对

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-13 09:16:07

RSAGenerate不使用公钥,而是采用十六进制的公钥指数。请注意,您必须谨慎地选择这一点,因为它必须与φ(n)相同。一个很好的价值是10001 (在十六进制中)与其他实现的兼容性。

可以通过设置n和e从私钥创建公钥。

代码语言:javascript
复制
var pubkey = new RSAKey();
pubkey.n = privKey.n;
pubkey.e = privKey.e;

伪造文档包含三个不同的示例,它们使用相同的公共指数生成RSA密钥对,如下所示:

代码语言:javascript
复制
// generate an RSA key pair synchronously
var keypair = rsa.generateKeyPair({bits: 2048, e: 0x10001});
代码语言:javascript
复制
// generate an RSA key pair asynchronously (uses web workers if available)
// use workers: -1 to run a fast core estimator to optimize # of workers
rsa.generateKeyPair({bits: 2048, workers: 2}, function(err, keypair) {
  // keypair.privateKey, keypair.publicKey
});
代码语言:javascript
复制
// generate an RSA key pair in steps that attempt to run for a specified period
// of time on the main JS thread
var state = rsa.createKeyPairGenerationState(2048, 0x10001);
var step = function() {
  // run for 100 ms
  if(!rsa.stepKeyPairGenerationState(state, 100)) {
    setTimeout(step, 1);
  }
  else {
    // done, turn off progress indicator, use state.keys
  }
};
// turn on progress indicator, schedule generation to run
setTimeout(step);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27457123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档