怎么验证它们是否属于RSA的一对公钥私钥?

bd__cbs__65xyi5({

"errno": '0',
"msg": '',
"pubkey": '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqu+ZGlNmteGilhUq59KNGCjhy\nUTASfP1Wo5n+vWEUR5oRFlmA0hsMIhY7Pvl7CmqSid5bIEdOi3vWGW\/zXikS1B4A\ngMv6X8MLW4s8+oBPshNFLuED1j1pFSi91gHw3DVGkFfvBIcd7qFTTeOIxPxY1cpo\nytwMAo9+xLdXxO\/IYwIDAQAB\n-----END PUBLIC KEY-----\n',
"key": 'F513CBvGzhLBNeds7XallZAGfSzjqTl2',
"traceid": ""

})


http://tieba.baidu.com/f/user...
上述数据来自百度贴吧登陆包getpublickey
"pubkey"与"key"不是RSA的公钥私钥吧?直觉上"key"太短了。
用如下代码测试为false
我想知道我这样测试有没有写错?


window=global
const JSEncrypt=require('D:/nodejs/node_global/node_modules/jsencrypt')
let jse=new JSEncrypt()
//加密
var public_key='-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqu+ZGlNmteGilhUq59KNGCjhyUTASfP1Wo5n+vWEUR5oRFlmA0hsMIhY7Pvl7CmqSid5bIEdOi3vWGW/zXikS1B4AgMv6X8MLW4s8+oBPshNFLuED1j1pFSi91gHw3DVGkFfvBIcd7qFTTeOIxPxY1cpoytwMAo9+xLdXxO/IYwIDAQAB-----END PUBLIC KEY-----'
jse.setPublicKey(public_key)
var enc_str=jse.encrypt('123456')
console.log(enc_str)
console.log(enc_str.length)
//解密
var priKey = '-----BEGIN RSA PRIVATE KEY-----F513CBvGzhLBNeds7XallZAGfSzjqTl2-----END RSA PRIVATE KEY----'
jse.setPrivateKey(priKey)//设置秘钥
var uncrypted =jse.decrypt(enc_str)//解密以前拿公钥加密的内容
console.log(uncrypted)//结果为false

阅读 4.4k
2 个回答

公钥、私钥都给你,请问非对称的意义在哪里?是觉得 CPU 平时太闲了、挺浪费的吗?

而且你看公钥长度,162 个字节,很明显是 X509 的 1024 位公钥,私钥怎么可能就 24 个字节?


抛开这道题来看,你要真想对比公私钥是否匹配,有现成的 openssl 可以使用,提取之后 diff 一下就可以了。

如果你是想在前端实现,那就是先加密、再解密一次,看看结果与原文是否一致、且不抛出异常,这就是匹配了;反之则不匹配。

不知道你想做什么。

非对称加密不会把公私钥都发给你的,key不可能是私钥。

客户端可以用公钥来验证签名和加密数据,服务端可以用私钥来签名和解密客户端发的数据,公钥的效果是保证服务端身份和数据完整性(通过验证签名)和保证不被中间人窃听(通过加密数据)。

key 不知道是干嘛用的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题