使用移动客户端和服务器PHP之间的公钥/私钥加密

时间:2016-04-12 11:41:03

标签: php android encryption public-key-encryption private-key

案例1:从客户端到服务器的加密数据

需要在server.Public密钥中创建公钥/私钥。客户端使用公钥对其进行加密。服务器使用生成的私钥对其进行解密。

案例2:但是当服务器的数据发送到的时候呢 客户端。??

该数据也应该加密。是否应该生成为案例1工作或新密钥创建的相同公共/私有?有人可以根据我的要求解释case2。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如本white paper on secure data encryption及其支持材料中所述:

  1. 使用HTTPS。
  2. 对于第二层经过身份验证的加密,请使用带有固定公钥的libsodium(一个现代的跨平台加密库)。
  3. PHP示例

    密钥生成

    $bob_box_kp = \Sodium\crypto_box_keypair();
    $bob_box_secretkey = \Sodium\crypto_box_secretkey($bob_box_kp);
    $bob_box_publickey = \Sodium\crypto_box_publickey($bob_box_kp);
    

    <强>加密

    $anonymous_message_to_bob = \Sodium\crypto_box_seal(
        $message,
        $bob_box_publickey
    );
    

    <强>解密

    $decrypted_message = \Sodium\crypto_box_seal_open(
        $anonymous_message_to_bob,
        $bob_box_kp
    );
    if ($decrypted_message === false) {
        // You have the wrong keypair or the message was tampered with.
    }
    

    Android示例(使用Libstodium

    密钥生成

    byte[] secret_key = new byte[Box.SECRETKEYBYTES];
    byte[] public_key = new byte[Box.PUBLICKEYBYTES];
    Box.keypair(public_key, secret_key);
    

    <强>加密

    Box.seal(
        ciphertextByteArray, // Output goes here
        plaintextByteArray,  // Your message
        public_key
    );
    

    <强>解密

    Box.sealOpen(
        plaintextOutputByteArray, // Decrypted data goes here
        ciphertextByteArray,      // Encrypted message received over the wire
        public_key,
        secret_key
    );
    

答案 1 :(得分:0)

您可以在任何方向使用公钥/私钥加密。

因此您的客户端可以使用公钥加密,然后服务器可以使用私钥解密。 如果您的服务器使用私钥加密,则客户端可以使用公钥解密。

相关问题