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----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIT18mmRzlapcCAggA MBQGCCqGSIb3DQMHBAiBVkoYT8IZZgSCBMhsak6xn/CGKFhUIqMqIzZpLsyTOw6P rOJq9E//rBMr655jvc+GkNj5vnFQsutHMJeORzS3+MLR6cUc8BK9oKQTd/MeJUt7 QMq+mMOdnGJ0YcksnXylhizrWIdpBwvyMYhZT33UKSMyvl+9QqlTPoAeXPEO9nUq rCYA3N+Wx2IpkgoYLs8VsIEdFBOZq0akAD9w0R669m4X5C+z5RKf4/le+MK+r5qF d0L++ihU1eKRSH8Ov2NSC3J1j+7hhMDAr72YvBBFqNLNQbbL1sREimABD9CsJwcw is4kWOFXST7qRMYBpngzs/ijh2FoUWo7ReKjvGfqxrag89e0OokrzeWjz3Lba+Zt jot1xZwOuktqMIwMLL6sc7OeXV49Jgdlfr/6CVUbVq69Jfv625FRQTcBOngGCT6v O8qYi6eU6ZtJIJzeTJgcO1/26c+VM9GO/UGdGEsKOJIGa/mSn2Wl+lPweRcCX/0b uvgD3044K3xz00r+Bf0M1kXlkr6/WRRFreBYKJ3ZggmKFzJSTKdeSCWubJApHJxR yY+EfjTp8Ov1p9yN1tbVoDFHP0BTLLmtZf6nxNpheD3OTKmDlJ4PM+YQdJ+sU8Iz 7wIV9U86ptxJqGN/1di0w+43Twk8snTHHVA1Jd6NPsazw36BBh5C4ZfAZ0xDvaj9 SNIoLz3HmvXFfbHbY74RkvucdmFAkW/TbirkAQ4fFO87b7RaJ6hFTUnGlkt4gwxD ckOaRXuusM0LLmODWLydc9JzNm8J9UL1axfmjqOI1GXxFN6+1gehWdNHYr4CLUUp l8rPI0UL3W1LMyqlUrQSvRTl3eolmuylCKWxpfQ77vjiq8PpoRbIpIjDsLfXg7UH Guern6t48Fwlhmb5FzRKrAZCiGlJss46O6uU3G3SZgMd9q+0rBdjKrfXBtdZzYlL L5fBDB8acjJDaeu945gsM9Lr0ouNdwIZrNzJJWn83czN84HWnn2DZmGLnDHrlQlf 9SdleZ3d0h2baRLmKqbuqyJIFt7MZyaiYTOwuktPL0Jl92kWwG+koe36hyEW5wlz /J/8Wcnq+TFhfqQM6IXoeX5ZMPCg4iQikctCDYRBIKrTCajcBu6pN9g75q0t9V9D UmOpg4dKLr7CHiR8txUOXOJj7+cZ6DzRjF85fpnFPQgmd3/VRa6uZf0QJN1M7fDb K7cBGOfw9erDSGmgL2ocSmkudfFF129X8FSyjT/6g2WF/3DKZlgcbW/YWpkDxoap KAX/wsYO9cKiTEYf/4hUSd73oDQs8O0sYkAHkJQ3SIeSc3zBAvPlW+r36ch/TiVU /PimEQ/Dqqp8xIYXXBxrKsfetQPVLqPD7arycmMxheGLTjXnLBmXSe4z0/fTvYLA vhZFVwpjaIL6MFjVXNRFsOU07FdA0YWe7MBIyHQZtBGU+RcORaOzdo/GOakIU/4E HhD0wKUQ3mm8iM9Do3ODSDtF5VfHfVC16OHkUnFN/oV3eN4PGcQaYMYAZMd7OGVd PGwWPgEqaSy/nM6bYuSd4zQXy/Z6AX7KRJkjZHUSPZ7ajuXXKjX+rMHAsisnmuz7 OjH6RstqY/LJHVZgt6xt5Z0q9BFSryZtZdti345048PmJWG5Y3GZ2UDM6MnUbIWO dSo= -----END ENCRYPTED PRIVATE KEY----- "
Public key 1
string(451) "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqT43V6qJFziZ+mxuM3xl 2IA2XAa8vgFYJ/myrK5HzQJ5uKNT++ALP96lGCnVJykAz8o3RnDq2h19/efe6Mbo qo7TyZo6bjSClYkRowIdh33lAmDA5BxOTkeQGBKli+yRxPkXPkpdqL5mHgro2p1t OYjOa+JwlHWcdomzlycZqL00GHAz8U5upDJAwZQ7rbeYsKRSin5af9jkVqqCU7DS 23lRBHlV/axF2OI9ZfrF/zbhccugy0ILdJs2AujfKqMDdDWP6bDVGTXqDuVkO4Gv F/dosMn9XmedLUtuY/MeOceFWDPBe0kyJ5vzUq0PSL+SUba5vLDWUZAqCEgd729H EQIDAQAB -----END PUBLIC KEY----- "

수신자 2
Private key 2
string(1834) "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIYYvGV+1E9LwCAggA MBQGCCqGSIb3DQMHBAgppGgmOweEOQSCBMg7awQlh0gnz2M8i8y4V5tp/t7/AN+n +ekmmMi4fm6Drt+YxFG9qchTZ+91cVkejlE9PIG10G93QTgDWMTvmnALpCVi4J24 qx5rojdraSsk2GA7ikAPqXcxRTOVoIy/y0U4f1ybIPUdI9tPWL5HfP5lxSFYCgw7 ZPo2bwuxFM6PZvCA3eKkUskM8cJedx9mqpdNxK7SlKzMv8cdb1baCnwoCjA5XdiR d+MpjebLb69lqbJis9TD0xh2vUF8CuRrZcCWXbNdKCAJAHofeEpz5RzMW7rmFlPu gkqn7lKr0i2aSM5xTSoFAbitBDLLBYa5Ry5OZ4C77U5hyoamsNKpmcJsUMD+y4OH wRz6O0GpPoP/Ij/flHCL8HepH5U6oE4J151HzW0misafgg0X/GBUoenlVCgC5tQf Dy4fsTNlPeJG5fbl1WU4UUNasWIjJZPqlBgtEIrPquU9sAw7sMavHxcrLuC7uMG2 ltc6M1NaC9K2Muh6iOz3tp8UkfVDkAnS5e7I38zIsMn5HZuvpuHHEuq4tNi+uvmP 4pkwg0SE2JzkmGR+fpaa6sVAkPPInIQyOKXNtlnlVZ68lOVyU/fMVHj0jeKMPi/c Q85iosENX5FP6cIs3vvwp/ItBOw0+YUOnrYFUbH8AHzkb8Q/NZtR8hY7VDdKwPg8 6cXgZqAucSCw6wxfl/C44HSh7o1e3ngFVjQV3nNK8waV3gJJ8Hy5DYweKnxb1B9Y jbXU1GCtf8rkZVqUgfn6V/B6KlgvnCR5x2Y/tjTAEZSAFVxUGlXOBcJhty0RvDs1 oBGKa4mGfzSGAul/xLK+XrD5vGs0S+5x4t/gTJnmHqmVSghCAXY9w4davSK0olf+ MIJaHc2ZkARjqDF8lc8Lx6FF9lEdqkfB0hgm3EoXIzk5OO04paxzox9x9Vxh/G/V 6E64mS49PClA3tumDobzBPnX+jfBo5DnTnefb6mRelnTo5sJuR4HfHb6ufU1OeHc k/5FsZI/A+o3b1haIl+PX0DxNnINYliSnqOHs71r7fgenVcUDyGQzl87uXEUkEAe iMQdSalMAEZjM+2mTTg35OvWw7fqJS8HzQ1xqv+QV1Q9+wbQu7buuYXNl5u10Dl1 3TZhUaFQof4hn+kSCtYfmgsPgq/mHmKjBLDDUPWBbmqbdQk3uItNGF7TLoOZPNB+ z5ix2YEcmyWQxbqCdLyjruh6WwBr459Pkkc7mmWx76sxf1Me5pukp48nVIfQVhF2 +o68ImXp+FohdhH03tXFNcHx1iCDWq4tJCglRVDDWp+g+DTlcsM7BU0fpYHrf/sp wMLBo6hxmc89qFhrNIvlQ4BWmd96bgsprJv72EMPCFQaOS7k+XdGB4I/o5x23jhN CmpHF9QFiie4QjZ0ZWpUSJMQxM4cj6SEGCkTyaCE6zESVbOUAYTNiiiKlAt8bgnI 2tmJWdcsMXhYGiBB1yQEHtld4WAVW/xsU40ORoBCnWpmbBrw7y0WXQkYC2e1po3l fZ9MPg4IssOs3TfKgpK/Uvfozyd/GqtfiAAlKGB73hP4YGPm9rUwacFHa3lKEQo6 iFxOV4lhbL/5oWUWuI6Xi/VXOHW65hX3aURFA7FkLRxkSyysKrTaJoENbW8c0Xga eQM= -----END ENCRYPTED PRIVATE KEY----- "
Public key 2
string(451) "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp5LxdyJqThBJguUyMcAh kthXGG5nOM8QpIIzWqwe4WxK4R2HNg/mN3/sS35EiCmvReK4AuDh1jRYBuBP1TId UmssYCTkNxp1oTRcCfOZ2Ggf4lJtxyFObxHr6kEsra98QHtl5V8Tw3uLsosw93Dn JLNbMbUtHEhZyo/oNqVJ3ocAOieKItCbAPvnHcxzraYYuWNmCmFEKfiGBTW4Ti18 xi/p3HZMbzci6NKXu/gWNZm/vwBOWaR+2lMY1BUniKcepOcvmwnWOVyGfIanEgeb LZwB/ugpc1C8or0A1UrToapIZ1HMAcX4ulh5hhm5RMjKM80i8mCmYxLh+eZFffvF 5QIDAQAB -----END PUBLIC KEY----- "

평문 Data: Only I know the purple fox. Trala la !
전자봉투 암호문. base64_encode(sealed)
string(52) "nGkFtczI2oU3KOo2k8oSKC5T1eLq8PfVKvoD0XVf3Rgub+kbiQI="
수신자 1의 전자봉투키. base64_encode(ekeys[0])
string(344) "M+9C8XK9Zp47Y9yFFG6Xd0zYBAEJJ1LAmRZH0pi01Jspz1HEomz1q/QiZpjwGjIcusxGwh2E3kgBflHx4VHklZXC2oNUO2W0nbIPQKi5D3sdTNbEqVDl4LPx3E+ZYC6J3QFmyaHZfyw+fKjH/59j5Tj/ogQ7rd+a+2cvL7pD9p8affg7dbTda7gfPt5uDzr5GUYWlMR21lMOsg8TnDkXFqEmAk0Lpl8rCOQVIpeuym/1cN0xXmUbI91FavdX1/CZ+mIpmWAyylDdNc9Jy4Leg+39a7bROrlT844YqdtTrz3F7UAGEXnqvm2dXaM9aEsBCPk7s6MMz4WhZpE7H1espA=="
수신자 2의 전자봉투키. base64_encode(ekeys[1])
string(344) "DowjSSew02W99hA2Fkl6IQV6fCw7r8L1bm5fnbmS5AZ8dWuP0qToCngutgkiaABZQJf/juG3VVzeSsfEnW8awaEZtuN3lcVYyoIGYCG3IP4Q+sPyOu7OL1p9oh2oyw3U7wh1fO1zVt/sExd1zxxwW5UTJ/JRQyKMwsDfmx3VI6sst3Yulg4Q0SVSubbRzCRkE74CzZRrtF2X4us2G2fakyOHlhRCT/RGQGBQzNCTTnE/8ubZnfA/J+ojQHBnDoSw7MJKv8MwvUw6w+yXAprdBcSVe1WPa/NMIbke5zXZXuY5FwpR/tu2dkEbffOn90fLoN6fKN8OoqQJI2UsqxncXg=="

수신자 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 !