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 !