密钥格式需要在Crypt RSA中使用

时间:2014-04-04 11:40:32

标签: java php rsa crypt phpseclib

我使用这个Java函数来创建密钥对。

      KeyPairGenerator keyGen = KeyPairGenerator.getInstance(keyAlgorithm);
        keyGen.initialize(numBits);
        KeyPair keyPair = keyGen.genKeyPair();
        PrivateKey privateKey = keyPair.getPrivate();
        PublicKey  publicKey  = keyPair.getPublic();

        // Get the bytes of the public and private keys
        byte[] privateKeyBytes = privateKey.getEncoded();
        byte[] publicKeyBytes  = publicKey.getEncoded();

我将此作为公钥(与此类似。此处无法粘贴):

0��0
    *�H��

我想知道这是什么格式的密钥? pem / der?

我想在我的rsa php代码中使用这个键。我是否需要转换为任何特定格式?

$keyData =file_get_contents($configValues['metPubKey']); //'metPubKey 'variable contain file path

    $rsa = new Crypt_RSA();

        try{
            $rsa->loadKey($keyData); // public key
            // $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_XML);
            //$rsa->setHash('md5');
            $encryptedToken = base64_encode($rsa->encrypt($token));
            print_r("after : \"".$encryptedToken."\"");
        }catch(Exception $e){
            // print_r($e);
            die;
        }

它没有抛出任何异常。但是,为了我的好奇心,同时使用相同的数据运行相同的代码,每次创建不同的令牌。我只是想确认一下。

在php中还有其他方法可以使用RSA公钥加密数据吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,Java在处理二进制原始数据方面非常笨拙...... 但是,由于领先的PKCS填充会连接一些随机内容以防止重放攻击和/或对加密数据进行统计分析,因此每次都会获得不同的令牌

仅供参考,您希望加密对称密钥并使用此密钥对大型二进制数据进行编码/解码。不要直接使用RSA对最终数据进行编码/解码!