2015-12-07 1 views
0

Я получаю одно из двух:Почему мой хэш-криптона прыгает между двумя хэшами?

  • body ==> ef41c6e9a687de63acba3cd120737f18
  • body ==> 3f952f0ca3875f634206563187bcd06d

Как это возможно? Я попытался с sha1 и получить те же результаты (два diff hash).

var request = require("request") 
, crypto = require("crypto") 
; 

module.exports.run = function (event, context, cb) { 
    return action(event, context, cb); 
}; 

var action = function (event, context, cb) {  
    var invalid = "url of image that about 50x50"; 
    request.get(invalid, function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      checksum(body); 
     } 
    }); 

    return cb(null, event); 
}; 

function checksum (str) { 
    console.log("body ==> ", crypto 
     .createHash('md5') 
     .update(str, 'utf8') 
     .digest('hex') 
    ); 
} 
+2

Это, вероятно, потому, что вы получаете два разных ответа. Напишите их в файл и разберите их, чтобы увидеть, где они отличаются. –

+0

did not загрузил файлы. но из того, что я вижу, после 5-6 запросов он меняется с «3f9 ...» на «ef4 ...», затем обратно на «3f9 ...». Я попробую это. – iCodeLikeImDrunk

ответ

1

Если вы скачиваете двоичные данные, как это, вы должны знать, что по умолчанию request преобразует ответ на (utf8) строки. Таким образом, возможно, что данные изображения становятся искалеченными в этом преобразовании.

Чтобы решить эту проблему, вы можете заставить request сохранить ответ как Buffer, явно задав encoding: null в вашей конфигурации запроса. Например:

request.get({ 
    url: invalid, 
    encoding: null 
}, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    checksum(body); 
    } 
}); 

// ... 

function checksum(buf) { 
    console.log("body ==> ", crypto 
    .createHash('md5') 
    .update(buf) 
    .digest('hex') 
); 
} 
+0

hmmm это похоже. до того, как я установил кодировку в значение null, я получал бы diff-хэш каждые 5-6 запросов. теперь это ушло. благодаря! – iCodeLikeImDrunk

Смежные вопросы