Javascript jsencrypt从encrypt函数返回空的解密字符串

Javascript jsencrypt从encrypt函数返回空的解密字符串,javascript,encryption,jsencrypt,Javascript,Encryption,Jsencrypt,我正在玩jsencrypt,发现了一些非常奇怪的东西。这是我的密码。如果加密和解密在变量中,则它们可以工作。但当我控制台记录enc,然后将值复制到字符串中时,解密返回null。有人知道我做错了什么吗 const crypt = new JSEncrypt(); crypt.setPublicKey = `-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnL4SAkXXmeub2DccgTT4v9EQr

我正在玩jsencrypt,发现了一些非常奇怪的东西。这是我的密码。如果加密和解密在变量中,则它们可以工作。但当我控制台记录enc,然后将值复制到字符串中时,解密返回null。有人知道我做错了什么吗

const crypt = new JSEncrypt();
  crypt.setPublicKey = `-----BEGIN PUBLIC KEY-----
  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnL4SAkXXmeub2DccgTT4v9EQr
  vkvqPQPzRPOeIL525tQd7vg1BlgxxnoS4oDn0G3JlzqI6y/VIaZy6QrIo3s5R2A9
  IiymPkeVOih4V5QeNSAO8tmUbEX4uEFWQDyObMeyF44R7fUoyUCcC/WdKezwcJlg
  q6dXIFJOyEzwJx0MPQIDAQAB
  -----END PUBLIC KEY-----`;

  crypt.setPrivateKey = `-----BEGIN PRIVATE KEY-----
  MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKcvhICRdeZ65vYN
  xyBNPi/0RCu+S+o9A/NE854gvnbm1B3u+DUGWDHGehLigOfQbcmXOojrL9UhpnLp
  CsijezlHYD0iLKY+R5U6KHhXlB41IA7y2ZRsRfi4QVZAPI5sx7IXjhHt9SjJQJwL
  9Z0p7PBwmWCrp1cgUk7ITPAnHQw9AgMBAAECgYEAl4kAZrBx1wiLE3cFiAe7WCfl
  Kmj/0j6ft/5FeoxfVtJ+bOtPWnB3vBYUS8213WgUOuayDaxu3JX1kq4cMiPL6XWC
  gznYdRDrO/92E5OyOjmrAGzItDv/SIoBGv68f/kxYC989H+yd7aCqF8SfRlR0ESi
  PnLLSYZfRsB4oLeSpkECQQDZdMLOZ3uiRwBvPV79mqfmME2OpB5VssAS9GO+giF3
  c8jibpre2wV/xWZ4/ACeXmFRgejVp09JEvF2OARhgSyVAkEAxNGxzJH22E0ZT3kq
  W7L7o8mkCQVjLK99dMaagUg+VpKk+4Y02hBStLP4xnIHt7NfpQ7r+cebk3ZeH5Ep
  hO7PCQJBALcKhpPxHWuKcn4wXY4BKYUkcZQ452Phk7YgyvjoVr1S0+xth6VBHU7g
  3ZHHJcoozagrPs7hB2cOL/v/yQg+EEUCQH5Ila5OkXWjsnO9qKIBq1giDvAC1ulb
  CEIfFA+TjPv7R4RjThIEmyx6tUqO68jAfMPpWRuBKZ9qOWZDu8IhgBECQCZTubwP
  zZ+9Kntj9BcoRjYYMeWK8voPzS4n1S8PK3249e7GdfX/Z7OcsvV9gYJ7CZ6W41fo
  wa3MnlkEivo3mrA=
  -----END PRIVATE KEY-----`;

  const text = "some data";
  const enc = crypt.encrypt(text);
  const dec = crypt.decrypt(enc);
  console.log('enc:', enc);
  const temp = 'EutZlbeFV2RTG8mk6xUMi/ceN1hmj/xFre+7GkmFMBX5ZTl+rpQlJfZC9uoBBO8ywoi0YceF+lXgpDlvMxUTKnK7nLjt2L4AWEBCXT5XNKdK83N4kkMgZkZocoTD/I7mBBJQ7ZHRgtMRIoPoVBKz2HhGaK2tq3U1lDtkDACuZ3k= '; 
  // temp is cut and paste from previous console log

  const dec2 = crypt.decrypt(temp);

  console.log('dec2:', dec2); // prints null

您需要调用函数setPublicKey和setPrivateKey,而不是分配它们

由于您没有实际设置密钥,因此先前的输出将使用不同的密钥进行编码,因此无法解码

您使用的加密字符串“EutZlbeFV2RTG8mk6xUMi/ceN1h…”的上一个示例也不会解码,因为它是使用另一个密钥编码的(可能已丢失)

但是如果你从现在开始复制粘贴,文本将被解码

请注意,您只需要设置私钥,因为私钥包含公钥参数

const crypt=new JSEncrypt();
//设置私钥
setPrivateKey(`BEGIN PRIVATEKEY)-----
MIICDWIBADANBGKQHKIG9W0BAQEFASCAMEWGGIDAGEAAOGBAKCVHIRDEZ65VYN
xyBNPi/0RCu+S+o9A/NE854gvnbm1B3u+DUGWDHGehLigOfQbcmXOojrL9UhpnLp
CsijezlHYD0iLKY+R5U6KHHXLB41I7Y2ZRSRFI4QVZAPI5SX7IXJHHT9SJQJWL
9Z0P7PBWMWCRP1CGUK7ITPANHQW9GMBAAECGYEAL4KAZRBX1WILE3CFIAE7WCFL
Kmj/0j6ft/5FeoxfVtJ+BoTPWNb3VbYus8213WgUuaydaxu3Jx1KQ4cmipl6xWC
gznYdRDrO/92E5OyOjmrAGzItDv/SIoBGv68f/kxYC989H+yd7aCqF8SfRlR0ESi
PNLLSYZFRSB4OLESPKECQDZDMLOZ3UIRWBVPV79MQFMME2OPB5VSSAS9GO+giF3
c8jibpre2wV/xWZ4/ACeXmFRgejVp09JEvF2OARhgSyVAkEAxNGxzJH22E0ZT3kq
W7L7o8mkCQVjLK99dMaagUg+VpKk+4Y02hBStLP4xnIHt7NfpQ7r+cebk3ZeH5Ep
HO7PCQJBALCKHPXHWUKCN4WXY4BKYKCZQ452PHK7YGYVJOVR1S0+xth6VBHU7g
3ZHHJcoozagrPs7hB2cOL/v/yQg+EEUCQH5ILA5OKXWJSNO9QKIBQ1GIDVAC1LB
CEIfFA+TjPv7R4RjThIEmyx6tUqO68jAfMPpWRuBKZ9qOWZDu8IhgBECQCZTubwP
zZ+9Kntj9BcoRjYYMeWK8voPzS4n1S8PK3249e7GdfX/Z7OcsvV9gYJ7CZ6W41fo
wa3MnlkEivo3mrA=
-----结束私钥------`);
const text=“一些数据”;
const enc=crypt.encrypt(文本);
const dec=加密解密(enc);
console.log('enc:',enc);
常数温度='T9tsyIGc+fFea7GWKHiJLOVbZf3vqiVEy/qBK37hxrGlsEQWh2HgD5+76XVqkmz6yU6w77CMX3wsRtH3KeD2NY4wxsb18JwcO4yJcaFL+ZWJ7WS8PUGYI5UXW2LWKW2X8GO/lE25pPJ4+F5BDEM4YKW6HV3Z/yXCwvc=';
const dec2=加密解密(temp);
log('dec2:',dec2)

您确定
setPublicKey
setPrivateKey
不是一种方法吗<代码>设置公钥(“您的密钥”)
例如,是的,这些都是方法。如果使用正确,它可以正常工作:属性将被称为
.privateKey
;名称
setPublicKey
通常意味着它是您调用的方法。谢谢您的帮助!