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

时间:2013-12-21 02:28:26

标签: javascript php rsa phpseclib cryptico

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

Cryptico似乎独立工作,但我正在尝试使用phptclib使用Cryptico生成的公钥来加密消息,而我却没有得到输出。即使我这样做,我能用base64编码并用Cryptico解密它吗?

使用设置为1024的Bits的passphase“stackoverflow rocks”,我得到了这个公钥:

XEjrqvt5K3pjM2m98ZFQOf9fObVNKPJQ9TYbo4sdNPaUO0NKdLtno8hXa292MiAmwip9JOiplmSQVEvpEnfebGNFFzqNgd4hAS6oXD6zHexVHsHpFTYxfVFQE93eHtbz0Mi7l64rnq6UOQKAB53CXVUev6RqyR6hs4oBiJRAOCs=

但是当我使用以下代码时,无论是否有PKCS1行,我都没有输出。     

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

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

有谁知道我缺少什么使这项工作? - 或者这是不可能的,我在浪费时间?

编辑:------------ Code我正在使用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;
?>

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题