V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sheyue
V2EX  ›  JavaScript

前端 JSEncrypt 和后台 node-rsa 非对称加密解密使用问题

  •  
  •   sheyue · 2022-01-07 00:52:24 +08:00 · 1860 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是我最近有个作业,我是想用 node-rsa 模块生成的密钥对,然后前端用 react+JSEncrypt 来验证,但是 JSEncrypd 导入的密钥和导出的密钥都不一致

    可以看下代码截图:

    这是用 nodejs 生成的 1024 长度的密钥文件:

    这是前端代码使用代码:

    这是上面前端代码输出结果:

    疑惑

    我不能理解的是 JSEncrypt 设置了从文件读取来的私钥公钥对后,能正常加密解密 我那个字符串 "sheyue"

    但是从文件读到的私钥和 JSEncrypt 对象导出的私钥都不相等(也就不能解密真正想要解密的数据)

    是那个密钥的格式问题吗(比如 pkcs8-public-pem 这个需要改)还是编码问题之类的(浏览器从文件读密钥是以 utf-8 编码读出来的字符串),密钥长度弄的是 1024

    求大佬解惑

    11 条回复    2022-01-10 10:07:03 +08:00
    illuz
        1
    illuz  
       2022-01-07 01:05:29 +08:00 via Android
    illuz
        2
    illuz  
       2022-01-07 01:06:40 +08:00 via Android
    sheyue
        3
    sheyue  
    OP
       2022-01-07 08:40:05 +08:00 via Android
    @illuz 所以是需要改为 pkcs1 规范吗,老哥
    liuidetmks
        4
    liuidetmks  
       2022-01-07 08:49:05 +08:00
    作业不是应该自己实现一遍 rsa 和对应的一些大数,模逆元,快速乘法这些吗?
    趁时间多,造些小轮子玩玩还是挺好的
    SoloCompany
        5
    SoloCompany  
       2022-01-07 08:56:28 +08:00
    仅仅是 rsa 为什么要用 x509 封装呢
    https://www.npmjs.com/package/js-jsbn
    tutou
        6
    tutou  
       2022-01-07 09:35:32 +08:00
    @SoloCompany 大佬,你这个支持私钥加密吗
    mozhizhu
        7
    mozhizhu  
       2022-01-07 09:54:40 +08:00
    前端也可以用 node-rsa 加解密
    sheyue
        8
    sheyue  
    OP
       2022-01-07 11:10:37 +08:00 via Android
    @mozhizhu 前端用这个就报错了,不知道为什么,😂
    mozhizhu
        9
    mozhizhu  
       2022-01-07 14:49:39 +08:00
    @sheyue node-rsa 有说自己是纯 JS 实现,可以在浏览器环境下运行;我的一个小项目,正常 import 模块,进行内容加密;你需要自行检查报错原因啊。
    sheyue
        10
    sheyue  
    OP
       2022-01-07 15:24:14 +08:00
    @mozhizhu 它文档不是说 node.js RSA 吗,不能在浏览器中执行吧,我刚刚用 webpack 和不用 webpack 都不能使用。老哥,方便把你那个项目使用 node-rsa 部分的代码发我一下吗。
    mozhizhu
        11
    mozhizhu  
       2022-01-10 10:07:03 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1651 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.