Articles of 数字签名

使用SHA256进行签名与使用RSA-SHA256进行签名之间的区别

我使用node.js玩数字签名 出于testing目的,我创build了一些XML数据的数字签名,首先使用SHA256,然后使用RSA-SHA256。 令我感到困惑的是, 两种签名方法都创build了完全相同的签名 。 两个签名是相同的。 如果它们是相同的,那么为什么两种不同的方法(SHA256与RSA-SHA256)? 我包含下面的代码: 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"); […]

是否有可能使用node.js和crypto签署一个Passbook清单?

我想弄清楚如何使用node.js和crypto签署iOS Passbook pass manifest.json。 这似乎应该是可能的,但我似乎无法创build一个合适的签名。 以下是我所尝试的: var crypto = require("crypto"); var fs = require('fs'); var manifest = fs.readFileSync('manifest.json'); var pem = fs.readFileSync('passbookdemo.pem'); var key = pem.toString('ascii'); var sign = crypto.createSign('RSA-SHA256'); sign.update(manifest); var sig = sign.sign(key); fs.writeFileSync('signature'); 我之前使用以下方法生成了passbookdemo.pem: openssl pkcs12 -in passbookdemo.p12 -out passbookdemo.pem -nodes 没有与passbookdemo.pem相关的密码。 我可以看到的一个可能的问题是,在签名过程中我没有合并Apple开发者关系证书,我相信这是一个要求。 另一种可能是我在crypto.createSign('RSA-SHA256');使用了不正确的参数crypto.createSign('RSA-SHA256'); 。 我不知道我应该用什么。 下面是Apple提供的一个Ruby代码示例,我可以使用它来正确签署清单。 def sign_manifest puts "Signing the […]

从JavaScript创build一个PEM文件看起来不同于Java导致签名validation失败

我试图validation与公钥RSA签名的SHA1,我已经写了下面的Java代码完美的作品,但是JavaScript无法validation它何时使用相同的模数和由crypto或ursa创build的指数。 虽然如果我用它对Java创build的Pem文件它的作品。 任何想法或build议的Java代码转换为JavaScript的最佳方式? JAVA: import java.math.BigInteger; import java.security.KeyFactory; import java.security.Signature; import java.security.interfaces.RSAPublicKey; import java.security.spec.RSAPublicKeySpec; import java.util.Base64; public class Verify { static public Boolean verifySignature(String modulus, String exponent , String encodedMsg, String encodedSignature, String signatureAlgorithm) throws Exception { try { RSAPublicKeySpec senderPublicKeySpec = new RSAPublicKeySpec( new BigInteger(modulus, 16), new BigInteger(exponent, 16) ); RSAPublicKey rsaPublicKey = (RSAPublicKey) […]

Node.js'crypto.createSign()的有效algorithminputstring

我正在使用一个项目的节点的encryption签名,并一直在试图考虑各种algorithm的起伏。 crypto.createSign()的描述如下所示: 创build并返回使用给定algorithm的Sign对象。 在最近的OpenSSL版本中, openssl list-public-key-algorithms将显示可用的签名algorithm。 一个例子是“RSA-SHA256”。 不幸的是,“RSA-SHA256”不是openssl list-public-key-algorithms的输出值之一(如下所示)。 那么这个函数的有效值是什么,或者如何从下面的列表中提取出来? OpenSSL list result: Name: OpenSSL RSA method Type: Builtin Algorithm OID: rsaEncryption PEM string: RSA Name: rsa Type: Alias to rsaEncryption Name: OpenSSL PKCS#3 DH method Type: Builtin Algorithm OID: dhKeyAgreement PEM string: DH Name: dsaWithSHA Type: Alias to dsaEncryption Name: dsaEncryption-old Type: Alias to […]

为什么Node.js的符号和CryptographicEngine符号结果有区别?

我正在尝试使用UWP的CryptographicEngine来validationNode.js Crypto API所做的签名哈希。 由于validation方法保持返回false,我现在正在比较两个签名方法。 当我使用这两个系统签署简单的string时,我得到不同的结果。 这是Crypto JS代码: //Generate signer and hasher var signature = crypto.createSign('RSA-SHA256'); var hasher = crypto.createHash("SHA256"); hasher.update('mydata'); //Generate hash from data hashresult = hasher.digest('base64'); signature.update(hashresult); //Read private key var inputkey = fs.readFileSync('private.pem'); //Sign Data var result = signature.sign(inputkey, 'base64'); 这里是CryptographicEngine代码: IBuffer buffer = CryptographicBuffer.ConvertStringToBinary("mydata", BinaryStringEncoding.Utf8); HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256); IBuffer hashBuffer = […]

如何将phpseclib的CRYPT_RSA_SIGNATURE_PKCS1转换为节点

如何将PHP的$rsa->verifyfunction转换为节点? 我使用了这样的encryptionvalidationfunction: const crypto = require('crypto'); const verify = crypto.createVerify('RSA-SHA256'); verify.update('some data to sign'); const public_key = getPublicKeySomehow(); const signature = getSignatureToVerify(); console.log(verify.verify(public_key, signature)); 但它总是返回false。 当我通过php运行我的数据和签名时,它将返回true! 任何想法我可能做错了什么? PHPvalidationfunction如下所示: function verify($message, $signature) { if (empty($this->modulus) || empty($this->exponent)) { return false; } switch ($this->signatureMode) { case CRYPT_RSA_SIGNATURE_PKCS1: return $this->_rsassa_pkcs1_v1_5_verify($message, $signature); //case CRYPT_RSA_SIGNATURE_PSS: default: return $this->_rsassa_pss_verify($message, $signature); } […]

非对称数字签名Node.JS

我需要find一些criptographic解决scheme,它允许我使用私钥签署一些数据,并使用公钥检查签名。 如果有一些nodejs包,会很棒。 谢谢!

使用nodejs生成带有数字签名的PDF

最近,我试图通过nodejs生成pdf。 我终于find了PDFKit 。 那个库运行的很好,但是我需要实现数字签名的一部分。 但是大部分的实现都是针对JAVA或C#,比如iText或者VersyPDF。 Plz给我一些build议… thx