簡體   English   中英

如何在Node.js中使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM