Tag: rsa

NodeJS exec使用来自进程的二进制文件

我正在尝试编写一个函数,它会使用本地openssl为我做一些RSA繁重的工作,而不是使用js RSA库。 目标是 从文件读取二进制数据 在节点进程中使用JS做一些处理,产生一个包含二进制数据的缓冲区 将缓冲区写入exec命令的stdinstream RSAencryption/解密数据并将其写入标准输出stream 获取input数据返回到JS进程中的缓冲区进行进一步处理 Node中的subprocess模块有一个exec命令,但是我看不到如何将input传送给进程并将其传回到进程中。 基本上我想执行以下types的命令,但不必依赖写入文件(没有检查openssl的确切语法) cat the_binary_file.data | openssl -encrypt -inkey key_file.pem -certin > the_output_stream 我可以通过编写一个临时文件来做到这一点,但是如果可能的话,我想避免它。 产生一个subprocess允许我访问stdin / out,但没有findexec的这个function。 我在这里起草的方式是否有一个干净的方式来做到这一点? 是否有一些使用openssl的替代方式,例如openssl lib的一些本地绑定,这将允许我这样做,而不依赖于命令行?

使用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"); […]

使用libssh从消息中提取SSH公钥

我在节点应用程序中使用node-libssh作为libssh的一个很好的绑定,并且可以很容易地模拟一个ssh服务器。 不过,我需要从传入的SSH会话中提取公钥。 我需要一个string化的密钥版本,以便以后在数据库查询中使用,并且它必须与您在id_rsa.pub文件中find的格式相同。 我已经能够将其缩小到需要一种方法来在libssh ssh_key到char数组之间进行转换。 它简单到使用ssh_key pubKey = ssh_message_auth_pubkey(message); 获得ssh_key版本,但是在libssh中似乎没有任何方法可以将ssh_key转换为任何可以传回到我的nodejs进程的其他格式。 我预见了这样的解决scheme: ssh_key authKey = ssh_message_auth_pubkey(m->message); const char *pubKey = ssh_key_to_char(authKey); if (pubKey) instance->Set(NanSymbol("pubKey"), v8::String::New(pubKey)); 但是,自然不是这样简单,因为没有方法ssh_key_to_char存在,我真的很感激任何指针在这里。

从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) […]

使用JavaScript中的PFX文件的RSA私钥创buildJWT(NodeJS)

我试图从PFX文件创build一个RSA私钥,我可以使用它来创build一个JWT。 我不太了解事物的安全性,所以很难find合适的库来使用。 我有一个提供的PFX,我需要使用它来encryptionJSON有效载荷(在一个Node应用程序中),然后将其发送到第三方(Java)后端服务器进行解密。 任何示例代码来做到这一点将不胜感激。

JS:使用RSA解密文件

我必须通过JavaScript解密一个RSAencryption文件(Node.js,更具体)。 我的问题是,它被保存为二进制文件,我发现只有一个库能够从二进制文件导入密钥:node-rsa。 不幸的是,我试图使用它时出现错误。 Uncaught Error: Cannot find module './libs/rsa.js' 现在我查了一下,文件肯定在那里。 我希望你能帮我find一个替代scheme,或者解决这个错误。 谢谢。

节点js – 使用由SmartCard HSM和NodeRSA模块生成的密钥

我使用模块pkcs11js来生成具有智能卡HSM的RSA密钥,如示例#3所示 。 var publicKeyTemplate = [ { type: pkcs11js.CKA_CLASS, value: pkcs11js.CKO_PUBLIC_KEY }, { type: pkcs11js.CKA_TOKEN, value: false }, { type: pkcs11js.CKA_LABEL, value: "My RSA Public Key" }, { type: pkcs11js.CKA_PUBLIC_EXPONENT, value: new Buffer([1, 0, 1]) }, { type: pkcs11js.CKA_MODULUS_BITS, value: 2048 }, { type: pkcs11js.CKA_VERIFY, value: true } ]; var privateKeyTemplate = [ { type: […]

使用node-jose,我如何解密刚encryption的数据?

我正在尝试使用node-jose实现简单的JOSE encrypt和decrypt函数。 我的代码如下(使用节点8.2.1写) const { JWE } = require('node-jose'); const jose = (publicKey, privateKey) => { async function encrypt(raw) { if (!raw) throw new Error('Missing raw data.') const buffer = new Buffer(JSON.stringify(raw)); return JWE.createEncrypt(publicKey).update(buffer).final(); } async function decrypt(encrypted) { if (!encrypted) throw new Error('Missing encrypted data.') const buffer = new Buffer(JSON.stringify(encrypted)); return JWE.createDecrypt(privateKey).decrypt(buffer); } return […]

NodeJS,RSA,这是安全的?

这是一个用公钥encryption并用私钥解密的安全方式吗? 如果不是,我需要添加什么? AES或类似的通过? var ursa = require('ursa'); var fs = require('fs'); // create a pair of keys (a private key contains both keys…) var keys = ursa.generatePrivateKey(); console.log('keys:', keys); // reconstitute the private key from a base64 encoding var privPem = keys.toPrivatePem('base64'); console.log('privPem:', privPem); var priv = ursa.createPrivateKey(privPem, '', 'base64'); // make a public key, […]

RSAencryption之间的c + +和node.js

我必须通过networking发送一些encryption的数据(websocket) 我使用下面的node.js模块生成了一个密钥对: https://github.com/juliangruber/keypair 我的公钥像这样: —–BEGIN RSA PUBLIC KEY—– MIIBCgKCAQEAlUiMDQsBgj5P/T86w/eg9MXUj8M4WMVihP8YzmDxMqCFb7D+w4N/1XcxWxQT …. Wo+SRCsr6npfp1ctDhMtkXIeNT4lKf3qUGhP5tbx/TreaNF/d8zCeinGR/KeBGadMwIDAQAB —–END RSA PUBLIC KEY—– 在C ++代码中,我生成了一个RSA类,通过char * const char rsaKey1[] = "—–BEGIN RSA PUBLIC KEY—–\n" "MIIBCgKCAQEAlUiMDQsBgj5P/T86w/eg9MXUj8M4WMVihP8YzmDxMqCFb7D+w4N/1XcxWxQT\n" …. "Wo+SRCsr6npfp1ctDhMtkXIeNT4lKf3qUGhP5tbx/TreaNF/d8zCeinGR/KeBGadMwIDAQAB\n" "—–END RSA PUBLIC KEY—–\n"; BIO* bio = BIO_new_mem_buf( rsaKey1, strlen(rsaKey1)); m_rsaPubKey = PEM_read_bio_RSAPublicKey(bio, NULL, NULL, NULL); usigned m_rsaPubKey,我可以用encryption的数据生成一个unsigned char的std :: vector std::vector<u8> Rsa::encrypt(std::string & msg) { […]