OpenSSL 전자봉투

int openssl_seal ( string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids [, string $method = "RC4" ] )
openssl_seal($data, $sealed, $ekeys, array($pubkey, $pubkey2));
전자봉투 암호화 - 세션키를 생성하여 데이터를 암호화하고 수신자의 공개키로 세션키를 암호화하여 전달

bool openssl_open ( string $sealed_data , string &$open_data , string $env_key , mixed $priv_key_id [, string $method ] )
openssl_open($sealed, $open, $ekeys[0], openssl_pkey_get_private($privkey,"PassPhrase number 1" ));
전자봉투 암호문을 복호화 - 수신자의 개인키로 세션키를 복구하고 데이터 복호화

수신자 1
Private key 1
string(1834) "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGw0DcDQsJEsCAggA MBQGCCqGSIb3DQMHBAis6PWNogxMxQSCBMgbzoQwlEZFcixjbXw8zfOf596Bk3Jb 17goNW+d3gQkOh5QldMS39POPfryUHEHOpnXE1qnNTgwzCM0jxBRbduWOkgL9xlc 3xZqIuYuUHkWf3iV2bMYmpexbBXEfF/nw45nlRw73jbrg9bR7xoMYmuAb9OCOla9 Vg+AHV90YPEuGDEafrMkbry1UasrE5Ne7S0G5sLlxVnHhf1WO61RMJzW20moI6Yh Pbwe8DwUQUGNHpxIv2jDytTslLX1wzfoucJrTJL/TSQW4mieQdJYGNJTLJk5fXbw SCNTJRYQtKyCWehSMtuLX1kAxNCvM2I/SMOfIWHxq3yM5icjVRY3LSaKtw+oW11i ncINtCqgjdggV3dSS3OSF5CVXLj3qfY/GbmM/F5QRLvRKU2+4wLGuPqM34d2qNxt Mnmo59P21i5rrI5cb8vVgqBw7K7IUo5/KLnnyi3c4/YJ/yj2Pwgx6dQ34YJjKev6 9ELAbYft5JVuebWbSiiepo5XDLZ3a9U1Q1S0HHthwhDg3wuQGYMsUxhZ7Ibrysfp KbKwtQDkbLK5/JN9naEkeKrU4GDznKMbQqO4oEHldEFxJXHQQidIg/l3dnEO58E6 W3/4w/+GVws8r1NIB4iHpVINX5t0R168v6K7x3nCp1FFtiI7oA4nRmZdkgoTiSmz 6xOnSsB1QNS1xo8OsQ7Tt9QtGXTT25Rspkg9Xpf8EfbYLXvci9D0JYW1qMil+zi4 PXr9amZZBLSKAKznNTrQnOGUTsWsdjUJY7mrfOQFf8NFZj0YgQDKjp+1v9KVNHv3 ame0Cf7wX5PAcYtIYKdoP/Yj6OBlWYEEKqR6sA9nn1b5/jfnAsnmSB0ueMyqahH9 zXwh49eMrhx5m4I+xHb8btBv41JMLvSUkWkjvLAzjWTtGstFJAbjnZiGWBYS0EdB T438F+gZIO502v+ZOo9TZeZyreYnkZNzWr+23W4TGCcC8XNKNV2ogcfPp6vBoRDU hXQXyvRKJI23OiLbzKwuzSf0z322SWIc0q2lSg96ZIynPfDL7PKU1fdFnfuYnIxE 8EOFkLwEzPpWMSppOeDN9FywAL8p+ISiL80K09W9ZbErY7I6viv5D1mM3gOD2HJb 6t1r6CmJ7RGGgdkcQmHyWFsbL+BCPQeWYV0tpbDx17dEwJGmIx0JBmgyVxfGm2N/ nQYGrTjqC2s50L2OJb8RH2VaiHHFONwT7X1ecN2yr6/K84ULjXrF9UUmijMfQZa2 BtPSs6zzB3aMKKPlajdnC2HdUpqY6XAscMFVdZYpaxSkXLZvz/8XFgKQrYbe9EPw w6QYLNPB48e6lVNO2PqnRDREgP0EA3nA0V9FrgGqb77cMzuB8qsE2he64VkFmm8m fVOTSpPPZ7B5MrhF5NYt2fp7dgBYA6U7UOuSRmIhOfQ+/3Q55mmTTkDuxXoJFd0V F9x5+9lrfJQDG1LThKheO76/boosepGbiiIc+EuuuJnio+mpzp2UMoa8o/rr8Vt5 jgjcyQBRe70CrUOYJpsoNYInSEqhjtdPqt2Y2d5oPKZThYUVY+rlBXO7KpL2+xzC 6g5dSEAggby7JPXP+6I/K73j00GRbFrf+tU8KP6CkXtL9Oyryl7JxsYZtyBv+m5Q /Hk= -----END ENCRYPTED PRIVATE KEY----- "
Public key 1
string(451) "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA30DzG/7wyy+Dp9S4bV8J Mees/nRIy1cUb+GqPTCBUkb6Z7PVhTUzAs7oQKKg5QZOOgem7kXSBoOycbN2pUKk 5q4SuANiJ4EnEzAZ2nSSoLUfa9l8BD4FzFBYHlBzX508KTIeV5hUIACgjSJI+nlh +5gv+1/0y16yEo8yr9g3kIDlzxz2gaBuR6r0Fb7DgDC5cRbPIORfmrEu16+UZ1Mm 7jqYRa9Md44aCNoGVn1iYnOmk62w8HE3s2N7KA1icScHKqFF4Bk+23MJEyHfiI3/ 2o2okpwwbJ2rIfPkJuPslb0h0K9PbRtorWdqm3Uu8DLs0vCJT26bj/3ZGHkqMP8G FQIDAQAB -----END PUBLIC KEY----- "

수신자 2
Private key 2
string(1821) "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFBjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIa+QzyTdLkcUCAggA MBQGCCqGSIb3DQMHBAgyplhJZa0d0ASCBMB4mnJ7WwovPkmUankFj7XsMrDT4hGQ fi6KTIoVPfJRxyCxi17qWKINwcOQ9ELB1CQO9du+mrDPp5nlvZIx9KsQIYfFUoqX H9+4L9IbUzlinZRRttIKErZcGa5V11CpsDXeakShabf3DE5Vje0GputZdxX2eVeP SUcOmoE/vjumFN9HhRQZwYB/gBeMMhOz+tTN58UYy/jQ27P1/xzQToALbff4rBa8 5Ecy9QpLWIJDspE1UGoq21UV4P4FSON5d75onLtj4LtbvnOErpIBDhHYzFldm2Zj pJFoUXLs61/BQhYwcEBUvsM7MA6otr2l06FERWxTBGIYQAYSFVph1++WFlek+tX7 gtpxVeTp8ohZyA336nRVmst1iOeOpPwerr/ZY5avjdxrtiN02IYA/dm3Ut9bPpis h5YGR0INW94F7jkQMAP7yT0lsQF1IZ3bJ4RPhJ6HNB/8ClH2c5tvTS8+KZ1VbZkK 4Lod+cO7MXNUL+7e8VpqPRHc9CsIOWv+mzpW2yQH5I5dh6CLevdM0MjjzbQy/HoF Fft8Kn9PDES0RJaMeBF/nNedXmhTAOSO/3iwzA3h6mKXjIIGw3XJPXpitrtSmb7a qT/lb2HoxCB5Ye+PaskL8+3cbRWlgKu5LgrUu96Rpnz9DFxjgI6R73Ay2RftIx/p hY6uKlxxJkITZE/69K5fsifyuE33dHti3qlt7wje8lS9A9A+Arn7HvPe/oOHH1ho DDEIY2mjSGhGRGlE/8NVF/SxLdcln/BqnJxgdpICOu6rRmtIlIeCjdfA7EUQTT1o IJNiGWGWdTsbCkV7H4BhEyvyfDT5vjBoqafb3bxJQha6W7PbxkOwaAU3jue50SAm ewBACytZ2qBvLWlrpybf2jWe7xtKbQ4C+8sqsCnRZ5PptGGoa67EArMQkVrCKKxP p3JmLf0NGz6Vb917ktCzRGsLbYXgI3z8FCYw+Z8pkW2BFaIFByahKr1NyxkmUq5+ hSksJfd6UlwA3APFWIC+L1ldm42cQ9QN/F+pK06kt5ZI8/448sPwTiT+X1PGaqb8 hiS7WooBJspaBoYxHsDLi5d/1bAHWyCOetQQo+R2EgIvNrFbhiblSKv3Ewein2s3 vE+z6X8BciTp10whvE641KdYtQSRE0FbLHBxjpwiT1U7NZEWlP7005vXpF6jTqrC VI9bELhZqr9M1qIkO8aDVgJ0MOQvg4z//i7zzA6MqSG+WKHon7pOE8e5e5h6q50h 3IHCBFlh0lOpOyrtDId8BKqWuCJkujP4FmgX/hXh86ex1gQvuoycW8iOdZFv1eB1 3NKJ++ZITEdlFfQ8EZ5nEWv0lzuJx+Zy5bGK8RVvq9PiDD3THX+VM9NTwgDppa6w /HgodcU0vRzMFKITry3RIaPCyyvxlcM/zVHdvNIdfEZc8F7XdjIP5hJdIvAPJIDb 99auuvQBbBUlDUuu2/32C1TyBg5y6H94VqHU85RmL8pKmml4YuCfus8+m+pz35nd PswS9QF7Mi1Nl+O+ebzprahBv2yTZY/Q5+Lrta1k2U08Hy/ImcUBAprU3sAWvNhm stpmJLBdqXT06If9va9Vjm7mOEHpeGc0H07BolEcYNfbW6Ux2gnUb8kA -----END ENCRYPTED PRIVATE KEY----- "
Public key 2
string(451) "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3BPtACD6MuXvLsFlIZbw rd2kHA/EbmUfAmeb1c/eD6iBh1AZdtt8KRbiNmB/7g0R0Lf+P0AJjagNX9IyIH8B 00kmsB8BN8xhXnIfqTpCyaC+1P6lGTB0334rom8eox0HOB+83AxnKckh3iOg0qiR aLAaZ7ENW9slz/nh2dINNnE2xGRGU6vur1S46cjM+CVM4CaaDkt9eDysSuT/gRhM P5sVOhZ5b8l0joIEv9FiFBXQ1h7Da+7qwBZsN767Uwe6PdW1MnI/McXE2xrJb/1z NYRmuI3oTQAmzWmES40ga5t8MNQ1wCHLjt6j7TR5n8m1w/+nlg3oPP9A9pZfcmZ3 8QIDAQAB -----END PUBLIC KEY----- "

평문 Data: Only I know the purple fox. Trala la !
전자봉투 암호문. base64_encode(sealed)
string(52) "JiIRcUD4N/SGFTOuGx+gFldZv3ixk88bvZPT1w/lob5+A2MeVh8="
수신자 1의 전자봉투키. base64_encode(ekeys[0])
string(344) "S0/1/OkIwcBsUTcPpZ4/Zq22qijIc3y9hVvBelWAQg6SM3JgMpPSQP4bX8I3U1O0q39d2JNRjvQM0onRhXI+BfpttUMWhW9SFHDJVqiv0ibB0EaopAwe/bk0MGfMMQSq0yrBH52f0sKkYDJstpeYogTx8jqEoAdSDTQoOeyfeqXKALjpGsyDc1n2Ru9MfZsneruAmd1u46+mbCiOk5fPa8kHN3yEJHUgy0KaP4eKpbiwy30cYeujNcZDm8JLAhJA5l9va1HRuBPtygMAE8ruJi6kz6DwFj0LnuugJvKrm+pweeBn4ofYqUEVMhL+zVCFlqiQPxp0Vvs0jbOAsYyXAw=="
수신자 2의 전자봉투키. base64_encode(ekeys[1])
string(344) "lwThHYqxJO1yiFwSYmaJE+Oc4gfB8qwjmi6tefzB4akrI/lebWAZQiynjcNPG2nvFP3FNOhLylglgghN7eikS0cRdWRmUaAqkDp+3oF51a7Lmha9l899JDZUJNg1dYH2QdVDMeVMDVuKAGryDHLGW3XruQ/ay3mZPVm5aH1nKcJrHpMAkVj9uKnQ4kD9eWI71PQi6YVNuEnpwlfTZXzqoC15LgxokGKsbtyEekqs6FYdFdrZjixOscEhxLYeSP01t5faDA4L72wz0i8+gkd2BFhwGwkdJsmYlOGnZRqAJs/8Np+tzJgzIGidpYSI3mDHx2Py54Mg5aMCmElhIb6t5g=="

수신자 1의 복호화
here is the opened data: Only I know the purple fox. Trala la !
수신자 2의 복호화
here is the opened data: Only I know the purple fox. Trala la !