Tag: encryption

如果在encryption之前已知明文的开始处是否存在漏洞?

假设这是我的encryption和解密函数使用node.js的本机crypto 。 var algo = 'aes-256-cbc'; var algoSecret = 'mySecret'; var encrypt = function(secret){ var cipher = require('crypto').createCipher(algo,algoSecret); var crypted = cipher.update(secret,'utf8','hex') crypted += cipher.final('hex'); return crypted; } var decrypt = function(text){ var decipher = require('crypto').createDecipher(algo,algoSecret); var dec = decipher.update(text,'hex','utf8'); dec += decipher.final('utf8'); return dec; } 我必须encryption长度为20的数据。然而,前8个字符总是相同的,每个人都知道。 例如:始终以api-key=开头。 包含或删除8个首字符是否会影响系统的安全性? 例如: encrypt('api-key=askjdhaskdhaskd') 'api-key=' + encrypt('askjdhaskdhaskd')

通过letsencrypt进行https安装后,Nodejs聊天程序'io未定义'错误

我在我的网站上设置了一个nodejs聊天程序。 然后,当我使用letsencrypt将网站从http移动到https时,聊天程序停止工作。 这里是服务器和客户端: https://synodins.com/apps/chat/server.js https://synodins.com/apps/chat/client.html 并直接阅读客户端脚本: https://synodins.com/apps/chat/client.txt 问题是,正如你可以看到在客户端检查元素,是我得到错误: ReferenceError:io没有定义 我已经search了这个错误,发现: socket.io – ReferenceError:io没有定义 但是我已经按照他在答案中提出的方式来做事了。 我不知道是什么问题,虽然我怀疑在客户端加载的socket.io模块有问题。 有趣的是,我可以在本地运行聊天没有问题,但是当我尝试在服务器上运行它,我得到这个错误。 有谁可以看到问题是什么?

Node.js / SAML:如何解密RequestedSecurityToken的内容

我正在使用passport-wsfed-saml2 ,WS-fed和SAML2协议的护照策略。 逻辑的WS-fed部分似乎不处理其内容是<xenc:EncryptedData>元素的RequestedSecurityToken元素。 这使得该策略与具有指定encryption证书的ADFS 2.0依赖方不兼容。 我想用一些解密逻辑对策略的WsFederation.extractToken方法进行修补。 下面是我想要预处理的RequestSecurityTokenResponse xml示例。 我应该如何去解密令牌? 具体来说,如何将<KeyInfo>元素中提供的信息与<xenc:CipherData>元素结合使用来访问明文标记数据。 <?xml version="1.0" encoding="UTF-8"?> <t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"> <t:Lifetime> <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-01-05T21:02:07.193Z</wsu:Created> <wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-01-05T22:02:07.193Z</wsu:Expires> </t:Lifetime> <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Address>https://localhost</wsa:Address> </wsa:EndpointReference> </wsp:AppliesTo> <t:RequestedSecurityToken> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#"> <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> </e:EncryptionMethod> <KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <X509Data> <X509IssuerSerial> <X509IssuerName>CN=token-signing, OU=SomeOrg, O=EvilCorp, L=Williston, S=VT, […]

passport-saml lib不能正确解密带有私钥解密密钥的saml EncryptedAssertion

我有一个encryption的SAML 2.0响应/断言,我需要解密。 格式如下所示: <saml:EncryptedAssertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/> <xenc:CipherData> <xenc:CipherValue>{some ciphers}</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>{assertion body}</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml:EncryptedAssertion> 我也有这样的格式的私人解密密钥: —–BEGIN RSA PRIVATE KEY—– {mumbo jumbos} —–END RSA PRIVATE KEY—– 我已经尝试在这里使用OneLogin的saml解密工具来解密encryption的SAML断言(复制并粘贴到该input框),它就像一个魅力。 https://www.samltool.com/decrypt.php 但是,当我试图使用nodejs,passport-saml导入私钥文件并尝试解密响应时,如果我省略(“—– BEGIN —-”),则会得到“Invalid PEM formated”或“— END —”标题),或者得到“无效的RSAES-OAEP填充”错误。 这是我的代码片段: const fs = require('fs'); const Promise = […]

Crypto JS:TripleDES不能正确encryption

当使用crypto js tripleDESencryption时,我注意到所有要encryption的string长度都很小,例如“01”,“111”,“20”,但是如“5000021234567890000”这样的长string,输出不正确,是不是我期待的价值。 例如对于这个“5000021234567890000” ,我期待这个: “HctDaKc / U9avOwZMSS5mEi62kfojDHA4”,但我得到这个,而不是: HctDaKc / U9bNnFy6eZHqHj3SemorJxQM 。 这是我find并用于encryption的代码 let key = CryptoJS.MD5(enckey); key.words[4] = key.words[0]; key.words[5] = key.words[1]; let iv = CryptoJS.lib.WordArray.create(64/8); CryptoJS.TripleDES.encrypt("5000021234567890000", key, {iv: iv}); 您的帮助将非常感激。

在离线播放器中保护SCORM内容

我正在开发桌面应用程序(在浏览器中启动一个包含index.html的zip文件)。 我想保护最终用户的zip文件,以便在没有App的情况下不能访问zip的内容。 注意:zip将包括HTML,JS和CSS文件的几个,我的应用程序将通过在浏览器中显示它的index.html文件来使用它。 我可以encryption我的内容,但在使用/启动内容的index.html(通过我的应用程序在浏览器)之前,我将不得不解密和提取到本地文件系统的压缩。 那时用户将获得解密内容的访问权限。 有没有办法以某种方式保存在内存中的解密内容从哪里浏览器可以访问HTML文件并显示它们?

Golang从NodeJS解密AES 256 CBC base64

这是我在Node.js中的: var crypto = require('crypto') function encryptstring(str) { var cipher = crypto.createCipheriv('aes-256-cbc', 'NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd', 'TestingIV1234567'), encrypted = cipher.update(str, 'utf-8', 'base64'); encrypted += cipher.final('base64'); return encrypted; } console.log(encryptstring("Testing 111111111111111111111111111111111111111111")) 返回: w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA== 这就是我在Go上所拥有的: package main import ( "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" ) // decrypt from base64 to decrypted string func decrypt(key []byte, iv []byte, cryptoText string) string { […]

密码模块中的6个随机字节可以产生的最大值是多less?

如果我使用parseInt(crypto.randomBytes(6).toString('hex'), 16); ,我能得到的最大价值是多less? 我的最终目标是获得一个浮点值(如Math.random() ),所以我想分割从parseInt(crypto.randomBytes(6).toString('hex'), 16);得到的结果parseInt(crypto.randomBytes(6).toString('hex'), 16); 由最大值。

使用非对称密码保护文件

我知道非对称密码是如何工作的。 我知道有两个键(一个私人和一个公共)。 当有人想要沟通时,他们使用这些公钥来交换他们的公钥encryption消息,然后相应的消息只能由拥有私钥的用户解密。 现在,我正在使用Node.js,我需要做这样的事情… 我需要一个应用程序,每个小时读取一个数据库,提取数据并将其保存到一个文件,我需要发送到另一台服务器。 我的问题是,我不希望该文件将被其他人看到,我使用SSH传输,所以没有问题,但我必须encryption该文件,因为我不是该服务器的pipe理员所以也许有人可以读它。 不幸的是,两台服务器的pipe理员都是一样的。 所以我的想法是用公钥encryption文件,然后只有拥有私钥的人才能解密。 我认为这是毫无意义的使用像这样的东西: var key = 'blablabla' 如果我使用公钥,没有问题,所有人都可以阅读……确实是公开的。 但是用这个公钥,没有人可以解密这个消息,所以就像单向encryption一样。 现在,有人可以告诉我是否需要签名者/validation者来完成这项工作,或者我可能需要使用openssl生成两个密钥(public / private),并将这些密钥传递给密码/ dechiper? 我在看密码模块,但没有例子….

Nodejsencryption与Python hashlib

我试图做一个Python函数和nodejs函数计算相同的散列。 但是,好像输出的二进制文件在nodejsencryption和python hashlib之间是不同的。 我正在使用的python是: hash = hashlib.sha512() hash.update(salt) hash.update(password.encode('utf8')) hash.digest() 节点/咖啡文本是: crypto.createHash('sha512').update(salt, 'binary').update(password, 'utf8').digest() 这些线应该产生相同的结果,但由于某些原因,他们不。 帮帮我?