Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP使用Cryptico公钥加密消息_Javascript_Php_Rsa_Phpseclib_Cryptico - Fatal编程技术网

Javascript 使用PHP使用Cryptico公钥加密消息

Javascript 使用PHP使用Cryptico公钥加密消息,javascript,php,rsa,phpseclib,cryptico,Javascript,Php,Rsa,Phpseclib,Cryptico,是否可以使用从密码短语生成RSA公钥,然后使用PHP使用该公钥加密消息,并使用原始密码短语使用JavaScrpt解密 Cryptico本身似乎工作得很好,但我正在尝试使用phpseclib使用Cryptico生成的公钥对消息进行加密,而我没有得到输出。即使我这样做了,我能用Cryptico对它进行base64编码和解密吗 使用位设置为1024的passphase stackoverflow rocks,我获得以下公钥: XEJRQVT5K3PJM2M98ZFQOF9FOBVNKPJQ9TYBO4

是否可以使用从密码短语生成RSA公钥,然后使用PHP使用该公钥加密消息,并使用原始密码短语使用JavaScrpt解密

Cryptico本身似乎工作得很好,但我正在尝试使用phpseclib使用Cryptico生成的公钥对消息进行加密,而我没有得到输出。即使我这样做了,我能用Cryptico对它进行base64编码和解密吗

使用位设置为1024的passphase stackoverflow rocks,我获得以下公钥:

XEJRQVT5K3PJM2M98ZFQOF9FOBVNKPJQ9TYBO4SDNPAUO0NKDLTNO8XA292MIAMWIP9JOIPLMSQVEVPENFEBGNFFZQNGD4具有6OXD6ZHEXVHSHPFTYXFQE93EHTBZ0MI7L64RNQ6UOQKAB53CXVUEV6RQYR6HS4HS4OBIJROCS=

但是,当我使用以下代码时,无论是否使用PKCS1行,都不会得到任何输出。
$rsa = new Crypt_RSA();
$rsa->loadKey('XEjrqvt5K3pjM2m98ZFQOf9fObVNKPJQ9TYbo4sdNPaUO0NKdLtno8hXa292MiAmwip9JOiplmSQVEvpEnfebGNFFzqNgd4hAS6oXD6zHexVHsHpFTYxfVFQE93eHtbz0Mi7l64rnq6UOQKAB53CXVUev6RqyR6hs4oBiJRAOCs='); // public key

$plaintext = 'tester';
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt($plaintext);
echo $ciphertext;
?>
有人知道我错过了什么来完成这项工作吗或者这是不可能的,我在浪费时间

编辑:---我使用的代码是re-owlstead的注释------- 在使用和不使用PKCS1线路的情况下进行了尝试

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('-----BEGIN PUBLIC KEY-----
XEjrqvt5K3pjM2m98ZFQOf9fObVNKPJQ9TYbo4sdNPaUO0NKdLtno8hXa292MiAmwip9JOiplmSQVEvpEnfebGNFFzqNgd4hAS6oXD6zHexVHsHpFTYxfVFQE93eHtbz0Mi7l64rnq6UOQKAB53CXVUev6RqyR6hs4oBiJRAOCs=
-----END PUBLIC KEY-----'); // public key

$plaintext = 'tester';
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt($plaintext);
echo $ciphertext;
?>

是的,这是可以实现的,因为Cryptoco库似乎只使用标准的加密原语。您的PHP代码似乎需要PEM编码的公钥。然而,Cryptoco似乎只生成base 64编码,因此您需要用PEM页眉和页脚包围编码的公钥:

-----BEGIN PUBLIC KEY-----
XEjrqvt5K3pjM2m98ZFQOf9fObVNKPJQ9TYbo4sdNPaUO0NKdLtno8hXa292MiAmwip9JOiplmSQVEvpEnfebGNFFzqNgd4hAS6oXD6zHexVHsHpFTYxfVFQE93eHtbz0Mi7l64rnq6UOQKAB53CXVUev6RqyR6hs4oBiJRAOCs=
-----END PUBLIC KEY-----

请注意,当前的Cryptoco协议已被破坏,在浏览器中使用不受信任的代码(如JavaScript)并使用常规HTTP而不是HTTPS不太可能实现安全系统。我会避开任何没有支持组织或知名密码学家支持的加密库。

刚刚创建了一个错误报告。感谢您的回复,但在添加--BEGIN PUBLIC KEY--&--END PUBLIC KEY--之后,我仍然没有得到任何输出。你能告诉我你在phpseclib中获得输出所使用的完整代码吗?是的,它只是模数,这意味着RSA密钥的生成有点慢。我去查一下公众指数。一般来说,我不会信任单身的人看,我也可以做加密!像这样的图书馆。大多数时候,它们只是被测试过,以对抗造物主的误解。公共指数是3。现在检查PKCS1 v1.5标准,了解如何从中创建编码公钥。必须做一些购物…它只执行RSA加密,因此从这个意义上讲,它不易受到上述某些问题的攻击。不幸的是,我不知道RSA组件是否具有生产质量。如果您需要较长的密文,您必须自己创建协议,因此请注意不要犯与cryptico库相同的错误-在接受之前通过密文验证MAC,并确保不能跳过该步骤。JavaScript和PHP非常受代码黑客的欢迎,这些代码被翻译成许多可以工作但不安全的LIB。对于任何读者:不要使用CRYPTICO库,它有多个安全问题和误解