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
公钥、私钥都给你,请问非对称的意义在哪里?是觉得 CPU 平时太闲了、挺浪费的吗?
而且你看公钥长度,162 个字节,很明显是 X509 的 1024 位公钥,私钥怎么可能就 24 个字节?
抛开这道题来看,你要真想对比公私钥是否匹配,有现成的 openssl 可以使用,提取之后 diff 一下就可以了。
如果你是想在前端实现,那就是先加密、再解密一次,看看结果与原文是否一致、且不抛出异常,这就是匹配了;反之则不匹配。