PHP實現RSA加密,解密,加簽,驗籤

2021-09-29 17:05:12 字數 3043 閱讀 3202

公鑰用於對資料進行加密,私鑰用於對資料進行解密;

私鑰用於對資料進行簽名,公鑰用於對簽名進行驗證。

封裝的rsa**如下:

class

rsa//設定私鑰

$this

->

_keypath

=$path

;$file

=$this

->

_keypath

.directory_separator

.'rsa_private_key.pem'

;$prk

=file_get_contents

($file);

$this

->

_privkey

=openssl_pkey_get_private

($prk);

//設定公鑰

$file

=$this

->

_keypath

.directory_separator

.'rsa_public_key.pem'

;$puk

=file_get_contents

($file);

$this

->

_pubkey

=openssl_pkey_get_public

($puk);

}/**

* setup the private key

*/public

function setupprivkey (

)/**

* setup the public key

*/public

function setuppubkey (

)/**

* @function 私鑰加密

* @param $data

* @return string|null

*/public

function privencrypt (

$data)$r

=openssl_private_encrypt

($data

,$encrypted

,$this

->

_privkey);

if($r)

return

null;}

/** * @function 私鑰解密

* @param $data

* @return string|null

*/public

function privdecrypt (

$encrypted

)$encrypted

=base64_decode

($encrypted);

$r=openssl_private_decrypt

($encrypted

,$decrypted

,$this

->

_privkey);

if($r)

return

null;}

/** * @function 公鑰加密

* @param $data

* @return string|null

*/public

function pubencrypt (

$data)$r

=openssl_public_encrypt

($data

,$encrypted

,$this

->

_pubkey);

if($r)

return

null;}

/** * @function 公鑰解密

* @param $data

* @return string|null

*/public

function pubdecrypt (

$crypted

)$crypted

=base64_decode

($crypted);

$r=openssl_public_decrypt

($crypted

,$decrypted

,$this

->

_pubkey);

if($r)

return

null;}

/** * @function 私鑰加簽

* @param $data

* @return string|null

*/public

function sign (

$data

)openssl_sign

($data

,$sign

,$this

->

_privkey);

//base64編碼

$sign

=base64_encode

($sign);

return

$sign;}

/** * @function 公鑰驗籤

* @param $data

* @return string|null

*/public

function

verify

($data

,$sign

)$result

=(bool)

openssl_verify

($data

,base64_decode

($sign),

$this

->

_pubkey);

return

$result;}

public

function __destruct (

)

使用例子:

class

index

}

得到結果:

RSA 加密 解密 加簽 驗籤

1.公鑰與私鑰碼生成 2.獲取公鑰 獲取公鑰 return private publickey getpublickey catch exception e 獲取私鑰 獲取私鑰 return private privatekey getprivatekey catch exception e bas...

加簽 驗籤 加密 解密 公鑰 私鑰

看了網上的很多資料,發現有些點沒有說到,也比較複雜,這裡根據個人的理解,簡單描述,方便記憶。先理解 公 私 鑰 yue 的意思 私鑰,即私人的鑰匙,是唯一的,所以可以用來證明 是特定的人 公鑰,即公用的鑰匙,我可以將它給很多人 公眾 所以既然那麼多人都知道,所以公鑰並不能證明 一定是特定的人 在理解...

加簽 驗籤 加密 解密 公鑰 私鑰

看了網上的很多資料,發現有些點沒有說到,也比較複雜,這裡根據個人的理解,簡單描述,方便記憶。先理解 公 私 鑰 yue 的意思 私鑰,即私人的鑰匙,是唯一的,所以可以用來證明 是特定的人 公鑰,即公用的鑰匙,我可以將它給很多人 公眾 所以既然那麼多人都知道,所以公鑰並不能證明 一定是特定的人 在理解...