node.js - 浏览器中的缓冲区库不返回与 nodejs 中相同的值
问题描述
当在公钥上的节点 js 中运行 Buffer.from 静态方法时,从浏览器运行它时(在 Angular 项目中),我会得到不同的 console.log。他们不应该是一样的吗?有什么我做错了吗?
const pubKey='30819F300D06092A864886F70D010101050003818D0030818902818100B2E9AFAFEED76A5C31D069F84328D785DFE6C40A69F51B29C7D7C91EF171A5EF6AD9FC30AF31F4B59C0FE317E47B5DBAA04E3753AC7F8B0E54D8EB4372894900DE247FD11B8C2208FE1C837ADEC409B0F2EE89A5C54B8AB80D5934FC65100406077D129DC5EB961E883B937C4251FDA4BD77224D1CDEF09151894F902758AA3B0203010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
const buff = Buffer.from(pubKey, 'hex');
console.log(buff)
<Buffer 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 b2 e9 af af ee d7 6a 5c 31 d0 69 f8 43 28 d7 85 df e6 c4 0a 69 ... 244 more bytes>
在角度我已经安装npm i buffer
并提供它pollyfills.ts
这样的
(window as any).global = window;
(window as any).global.Buffer = require('buffer').Buffer;
(window as any).process = {};
在浏览器Stackblitz上运行相同的代码会产生
所以我的问题是
为什么浏览器中的 Buffer 返回的东西不一样?[0] = 48 vs [0]= 30
在 Stackblitz 示例中,您可以看到我使用带有 node-rsa 的缓冲区进行加密。nodejs 脚本中的加密值有效,而浏览器中的加密值无效。
解决方案
数据是一样的,只是两种不同的表示:
console.log(buff)
<Buffer 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 b2 e9 af af ee d7 6a 5c 31 d0 69 f8 43 28 d7 85 df e6 c4 0a 69 ... >
undefined
console.log(buff.toJSON())
{ type: 'Buffer',
data:
[ 48,
129,
推荐阅读
- c# - 我的页面上有一个 div 元素,我希望在没有 runat="server" 的情况下根据我的代码隐藏中的会话值显示/隐藏它。我怎样才能做到这一点?
- debugging - 如何使用 run_input.py 调试用户的输入?
- android - 在 openCV 2.4.9 中保存具有自定义名称的图像
- python - python中的肘部方法
- php - PHP从一个json字符串将多条记录插入mysql
- php - 如何对返回数据laravel的变量进行分页?
- javascript - 使用 map、filter 和 reduce 变换随时间变化的对象数组
- python - 根据给定手牌确定所有合法牌手(Big 2)
- excel - Excel索引/小,将多行减少到一个范围
- javascript - 基于两个/三个下拉值的jquery隐藏文本字段