メッセージ認証に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文字長いですが、これらの2文字がどこから来ているのかわかりません。