Tag: phpseclib

json_encode在encryption的string上不起作用

我有一点麻烦,因为我想encryption一些表单数据,然后将它们发送到我的nodejs服务器以json格式放入数据库。 我的问题:我似乎无法发布数据,一旦它被encryption。 我可以发布jsonstring很好,但没有更多: 我的代码: $rsa->loadKey($keydata); $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); $encrypted = $rsa->encrypt("test"); $jsonArray = array( 'crypt' => $encrypted ); $jsonArrayEncoded = json_encode($jsonArray); echo $jsonArrayEncoded; $ch = curl_init('https://……….'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonArrayEncoded); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = json_decode(curl_exec($ch), true); curl_close($ch); 我甚至没有得到回声输出。 但string似乎得到encryption,因为我可以回声(很多charset错误+一些随机的字母和数字),如果我解码在PHP匆匆我得到正确的结果以及。 我没有得到任何控制台警告或错误,无论是在铬,也不是Firefox。 任何我做错了? (很确定有) e:我使用它作为encryption库: http : //phpseclib.sourceforge.net/rsa/examples.html#encrypt,enc1 编辑2:好,作为build议在我把string转换为UTF8的评论,但现在似乎是太长,不能用我的密钥解密…坚韧o只encryption单词“testing”… 我想我必须深入挖掘… 如果有人知道:对于解密,我使用以下代码的node.js的Ursa模块: var […]

AES CryptoJSencryption和phpseclib解密

我有下一个问题 在Node.js上我有一个下一个代码 var iv = CryptoJS.enc.Hex.parse('00000000000000000000000000000000'); //it's for tests, later it will be dynamically generated var key256Bits = 'A5178B6A965AACF3CD60B07A15061719'; var cipher = CryptoJS.AES.encrypt( 'Some text', key256Bits, { iv: iv, padding:CryptoJS.pad.ZeroPadding } ).toString(); 然后当我尝试用phpseclib解码它 $key = 'A5178B6A965AACF3CD60B07A15061719'; $data = /*text encrypted by JS*/; $cipher = new AES(); $cipher->setKeyLength(256); $cipher->setKey($key); $res = $cipher->decrypt($data); 然后$ res变成一个空string 我做错了什么?

使用phpseclib使用AES进行encryption,并使用CryptoJS进行解密

我想在CBC模式下使用phpseclib AESencryptionstring(库的默认值): $cipher = new Crypt_AES(); $cipher->setKey('abcdefghijklmnop'); $cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3)); $cipher->encrypt("hello world") 然后,我需要使用CryptoJS或类似的解密nodejs ..我已经尝试了不同的库,但没有运气到目前为止。 我想这个问题是有关的编码输出不同,从每个库。 有没有人有一个如何实现这个互操作性场景的工作示例? 其他库如Crypto可以使用。 一个示例Base64输出是MF9lCR4DaW1R0adIe03VEw== 所以这个想法是解密如下: var helloWorld = CryptoJS.AES.decrypt("MF9lCR4DaW1R0adIe03VEw==", key).toString();

我如何解密在PHP中由npm-rsa创build的数据?

我用JSencryption浏览器中的数据,然后试图用PHP在后端解密。 在JS中,我使用了使用browserify构build的npm-rsa。 在PHP中,我使用phpseclib 我的JS: key = new rsa({ environment: 'browser', encryptionScheme: 'pkcs1_oaep', signingScheme: 'pkcs1-sha256', b: 2048 }); cleartext = 'this is a test'; console.log(key.encrypt(cleartext, 'base64')); console.log(this.key.exportKey('pkcs8-private-pem')); 然后我把公钥和密文带到PHP中: $rsa = new RSA(); $rsa->load($privkey, 'pkcs8'); $cleartext = $rsa->decrypt(base64_decode($cyphertext)); 当我运行这个, $cleartext为null 。 使用Xdebug,我可以看到$rsa->load($pubkey, 'pkcs8'); 似乎是填充$rsa的模数,指数,素数,系数等字段。 我甚至试过$rsa->setHash('sha256'); 之前调用decrypt() ,但是我的理解是哈希方法只用于encryption,甚至不用于解密。 另外,我知道这是不安全的,因为我分享私钥。 我只是想validation两个库之间的兼容性。 我已经testing过,我可以使用这两个库独立encryption和解密,但从JS库的密钥到PHP库我无法去工作。 编辑:导出私钥: —–BEGIN PRIVATE KEY—– MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDX7/224Phogd/B 4DGOf81GeNAkE0bAWieN9Tmq6S1Xe0iMY56J9hJ86HveCcJcJCMNAJtGVPjOObNf HZ58CUrqyMoj6VJ8wXGVPZuwkvBQrVFg4k/h+8+b3p5Z0cb8J9m8WWpnL/hifoyt […]

如何将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); } […]