rsa 암호화 클래스
급하게 메뉴얼 보고 클래스로 만들어보았습니다.
openssl이 사용 가능해야 사용됩니다.~
[code]
<?php
// http://php.net/manual/en/function.openssl-pkey-new.php
class TBRsa {
public $privateKey, $publicKey;
public function __construct($pubKey='', $privKey='') {
if($pubKey) $this->publicKey = $pubKey;
if($privKey) $this->privateKey = $privKey;
}
public function MakeKey() {
$res = openssl_pkey_new(array(
"digest_alg" => "sha256",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA
));
openssl_pkey_export($res, $privKey);
$this->privateKey = $privKey;
$pubKey = openssl_pkey_get_details($res);
$this->publicKey = $pubKey['key'];
}
public function ViewKey() {
return array('publicKey'=>$this->publicKey, 'privateKey'=>$this->privateKey);
}
public function Encrypt($data) {
$pubKey = $this->publicKey;
if(!$pubKey) die('공개키를 입력하세요.');
openssl_public_encrypt($data, $encrypted, $pubKey);
return base64_encode($encrypted);
}
public function Decrypt($data) {
$privKey = $this->privateKey;
if(!$privKey) die('개인키를 입력하세요.');
$data = base64_decode($data);
openssl_private_decrypt($data, $decrypted, $privKey);
return $decrypted;
}
}
$pb = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx0sWpnpwQ6tGZV0KGgpu
xTZXpretvCxuBWTxzZbC2hi86fz05f9PDtQHagHnn1bywNIieMOzbZ78Z/o178GV
dAVz3nZyC2LxRxDd1ylZLJz0HWiUxR0t35S04Smr83KBFS4FqNPKrz8jTF3VyEfp
rtC4+2YK7nEN4agD1prsaUUsnqEORm0Amyh8TXxNCfSbKazvDYhGTXyWXH6AzHPn
FyeNLo73DjibLRua8SvV0MjPjz2EUK/eRm7FzIBKSpOuGRITZBCHjYiHid6tJJ8G
XQIvVR7dhPwtIvNvDc985OB03eZmL3hJZD3N4JF/ivaNWcO6DU+6EPgvNealkADi
2QIDAQAB
-----END PUBLIC KEY-----'; // 공개키
$pv = '-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHSxamenBDq0Zl
XQoaCm7FNlemt628LG4FZPHNlsLaGLzp/PTl/08O1AdqAeefVvLA0iJ4w7Ntnvxn
+jXvwZV0BXPednILYvFHEN3XKVksnPQdaJTFHS3flLThKavzcoEVLgWo08qvPyNM
XdXIR+mu0Lj7ZgrucQ3hqAPWmuxpRSyeoQ5GbQCbKHxNfE0J9JsprO8NiEZNfJZc
foDMc+cXJ40ujvcOOJstG5rxK9XQyM+PPYRQr95GbsXMgEpKk64ZEhNkEIeNiIeJ
3q0knwZdAi9VHt2E/C0i828Nz3zk4HTd5mYveElkPc3gkX+K9o1Zw7oNT7oQ+C81
5qWQAOLZAgMBAAECggEBAIVgB2SbBI8FDTPBNIWA/ekWGUsGGkuZIHiTug/xGa6E
Z8ng9LUITIyL8fpMFAtbUVMiTtergWWXxSyBE5/FWpQvIgB8HI7qRLde3lik330v
/V/BIe9ZO94p03PtQ5rFwwW9qyP1uevWwXTWR8CmAApyvZniDObO2o9utkLlo9o+
tlzaLWPl4Thgfj+h2hdQJYVDFQ23offETMfikv7xHF78Giygu6BtcvP8n+4pyFyZ
fynCRakVsWZHcg1okpJrFprNqGPUJcrj20TyfctB9wFuqhAADkEirYESM318LHCl
HvbG5iSnAJrE+GPq7gNk++CDhZT+tTZoGyK/NAYUItECgYEA8BKwHf7+YCrBEw69
lZqrvNj6gMA82Rk9err8QB0fEBAu+iU96Zj83+yfbHcGi+4SEdJ/hOwq6qUuuqkZ
1ZtkYjoTenpBTpZ0uNWgjJIc80joaVkLaOY1mCdLye6AbyzbpJAsd6TlscFxWHVA
/Tt+6zIf0YE2fCgq0mL2wf7uZ1MCgYEA1IPQMWeztDljbUKSxHSeOGE5IS6c1uZH
EOndbeYyPmJHRTdu721KAAYYv0JQHZsTCIWof5hIj9JSFrycgRZkZ6SaI8vINX33
f42R22KICcQ+gE03xTUIGgQJxOw6PXtmndnwBX544UMXDqnvZcRNN1VhbV2K/7rT
AOnZpXrAY6MCgYEAvPqpAmPIz+C37Y2L9Wk0yUqwHou1GlyBBcyNZtbFrfpfUG/i
hbD1VjvI3zPuxlXYiYj+8p6Jxf3ThAI7IOfapGv9C0uTfw52wU0AvccC3QvGT69V
iPS2uZgtU77YASv5llgbeO8oFL4mwDBEwVKFPRVO8LdbMW7ZDpXykpFgD5sCgYAq
yyRIXpaMSyYfYVGGp+kYd1N2wBkrGRHkcQN61uj1MPsjEAeRxRMqsA+Zq/PQEmMh
yzBkCTlLZNHM7Ewjnmu3hyjW3nlBdE07bTma0NuOA+uGEIaTeptYCcoh0mPj7455
aOJxaMdUrRrehA/GEWJvKw1EZZrQ5kEJJQ4DyZUmOwKBgH7+lhffVhG67oPcqKAs
JdjP3rCDGckoZO6g7lONWiKzlgZHX8hb2SJjys6vW0+tE/1M3rdHG/Q/y5rV/IaK
vvIgKJy74uj6AJtbystK/1uqLmuVEYgN+5NJj9J2hSf30flel1xVOYxMQnjJ6LI7
cMxleiKYRi/4rc5OwKe3eVrK
-----END PRIVATE KEY-----'; // 개인키
$TE = new TBRsa($pb, $pv);
$en = $TE->Encrypt('와웅');
$dn = $TE->Decrypt($en);
echo $en.'<hr>';
echo $dn;
[/code]
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5246 | node.js |
swallow
|
2년 전 | 1110 | |
| 5245 | PHP |
swallow
|
2년 전 | 2529 | |
| 5244 | PHP |
swallow
|
2년 전 | 1290 | |
| 5243 | JavaScript |
swallow
|
2년 전 | 687 | |
| 5242 | node.js |
swallow
|
2년 전 | 667 | |
| 5241 | node.js |
swallow
|
2년 전 | 780 | |
| 5240 | MySQL |
swallow
|
2년 전 | 809 | |
| 5239 | MySQL | 2년 전 | 787 | ||
| 5238 | JavaScript | 2년 전 | 987 | ||
| 5237 | 웹서버 |
swallow
|
2년 전 | 3991 | |
| 5236 | PHP |
swallow
|
2년 전 | 901 | |
| 5235 | PHP |
swallow
|
2년 전 | 1380 | |
| 5234 | 기타 | 2년 전 | 765 | ||
| 5233 | jQuery |
swallow
|
2년 전 | 2037 | |
| 5232 | 2년 전 | 620 | |||
| 5231 | 2년 전 | 1174 | |||
| 5230 | 2년 전 | 1079 | |||
| 5229 | PHP |
swallow
|
2년 전 | 1026 | |
| 5228 | MySQL | 2년 전 | 729 | ||
| 5227 | PHP |
swallow
|
2년 전 | 838 | |
| 5226 | PHP |
swallow
|
2년 전 | 1814 | |
| 5225 | PHP | 2년 전 | 576 | ||
| 5224 | node.js |
swallow
|
2년 전 | 4086 | |
| 5223 | PHP |
swallow
|
2년 전 | 1318 | |
| 5222 | 기타 |
techstar
|
2년 전 | 565 | |
| 5221 | PHP | 2년 전 | 653 | ||
| 5220 |
swallow
|
2년 전 | 906 | ||
| 5219 | 2년 전 | 881 | |||
| 5218 | 2년 전 | 527 | |||
| 5217 | 2년 전 | 1002 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기