如何在nodejs中使用SHA1加密
How to encrypt with SHA1 in nodejs?
我有以下 bash 脚本:
#!/bin/bash
file="$1"
bucket="mybucket"
resource="/${bucket}/${file}"
contentType="image/png"
dateValue="Thu, 10 Mar 2016 04:13:24 +0545"
stringToSign="PUT'n'n${contentType}'n${dateValue}'n${resource}"
vs3Key="AKXXXXXXXXXXXXXXXXXXX"
s3Secret="/Wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
echo $signature
我想用nodejs编写相同的代码。这是我到目前为止写的,但签名无效:
'use strict';
var secret= '/Wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var file = process.argv[2];
var crypto = require('crypto');
var dateValue = 'Thu, 10 Mar 2016 04:13:24 +0545';
var bucket = "mybucket";
var resource = "/" + bucket + "/" + file;
var contentType = "image/png";
var stringToSign = "PUT'n'n"+contentType+"'n"+dateValue+"'n"+resource;
var s3Key = "AKxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var hmac = crypto.createHmac("sha1", secret).update(stringToSign).digest('hex');
console.log(new Buffer(hmac).toString('base64'));
你的 bash 代码使用 -binary
参数调用openssl
,所以你应该在 JS 代码中做同样的事情。
根据文档:
hash.digest([encoding])
计算要进行哈希处理的所有传递数据的摘要(使用
hash.update()
方法)。encoding
可以是'hex'
、'binary'
或'base64'
。如果提供了encoding
,将返回一个字符串;否则返回Buffer
。
相关文章:
- javascript加密实现,包括可信否认
- 如何正确使用AES加密
- 如何在Node.JS中加载加密私钥
- 客户端PGP文件加密
- Javascript/浏览器加密:使用Yubiky
- js:如何隐藏/加密图像的src
- 使用HTML5流式传输加密版权内容(音频/视频)
- JavaScript消息系统加密
- B从头开始加密
- 使用PKCS7Padding在python和Node.js之间进行AES加密
- 匹配在RubyonRails和JavaScript中加密的签名标头
- 如何在网络密码API中使用私钥对数据进行加密
- 制作我自己的加密/解密系统
- Node.js和Mongodb安全+源代码加密选项
- 提交表单前加密密码
- 需要jquery/javascript中的Sha1加密
- 如何在nodejs中使用SHA1加密
- 我如何使用Node.js加密来创建HMAC-SHA1哈希
- Node.js加密aes-256-cbc-hmac-sha1不能工作
- 如何从Ruby中的5字加密哈希中找到SHA1加密字符串