Я играю с цифровыми сигнатурами с использованием node.js. Для целей тестирования я создал цифровую подпись некоторых XML-данных, сначала используя только SHA256, а затем используя RSA-SHA256.Разница между подписанием с SHA256 и подписанием с RSA-SHA256
Дело в том, что оба метода подписи создают точно такую же подпись. Обе подписи идентичны. Если они идентичны, то почему два разных метода (SHA256 против RSA-SHA256)?
I включают в себя код ниже:
var crypto = require('crypto'),
path = require('path'),
fs = require('fs'),
pkey_path = path.normalize('private_key.pem'),
pkey = '';
function testSignature(pkey) {
var sign1 = crypto.createSign('RSA-SHA256'),
sign2 = crypto.createSign('SHA256');
fs.ReadStream('some_document.xml')
.on('data', function (d) {
sign1.update(d);
sign2.update(d);
})
.on('end', function() {
var s1 = sign1.sign(pkey, "base64"),
s2 = sign2.sign(pkey, "base64");
console.log(s1);
console.log(s2);
});
}
// You need to read private key into a string and pass it to crypto module.
// If the key is password protected, program execution will stop and
// a prompt will appear in console, awaiting input of password.
testSignature(fs.readFileSync(pkey_path));
Код выше выводит некоторую строку, которая является подпись, а затем снова точно та же самая строка, которая также подписи тех же данных, но создается с - предположительно - другой алгоритм, но он идентичен предыдущему ...
Связанные Q & http://crypto.stackexchange.com/questions/11293/hmac-sha256-vs-rsa-sha256-which-one-to-use, если это какой-либо помощи. – jweyrich
@jweyrich, к сожалению, это не связано. – Arim