我正在编写一个使用 HMAC 进行消息身份验证的 Web 服务。我在准备摘要的“数据”时遇到了一些问题,并且在 Python 与 NodeJS 中为相同的“数据”获得了不同的摘要。
我相当确定这个问题是由于编码造成的,但我不确定如何最好地解决这个问题。
Python代码:
import hmac
from hashlib import sha1
f = open('../test.txt')
raw = f.read()
raw = raw.strip()
hm = hmac.new('12345', raw, sha1)
res = hm.hexdigest()
print res
>> 5bff447a0fb82f3e7572d9fde362494f1ee2c25b
NodeJS(咖啡)代码:
fs = require 'fs'
http = require 'http'
{argv} = require 'optimist'
crypto = require 'crypto'
# Load the file
file = fs.readFileSync argv.file, 'utf-8'
file = file.trim()
# Create the signature
hash = crypto.createHmac('sha1', '12345').update(file).digest('hex')
console.log(hash)
>> a698f82ea8ff3c4e9ffe0670be2707c104d933aa
编辑:另外,raw 的长度比文件长 2 个字符,但我不知道这两个字符来自哪里。