日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

cpp加密php,常用的数据加密规则算法(php包含MD5和RSA)

發布時間:2024/10/8 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cpp加密php,常用的数据加密规则算法(php包含MD5和RSA) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.字典排序,并進行md5加密(字段1=字段值&字段2=字段值再加上key)

/**

* @param $array 需要加密的數據

* @param $signKey 加密key

* @return string 加密的MD5結果

*/

function sign($array,$signKey){

ksort($array);//字典排序(升序排列)

$str="";//將結果組合成key1=value&key2=value&signkey格式

foreach ($array as $k=>$v) {

$str.=$k.'='.$v.'&';

}

$str = $str.$signKey;//加上signKey(如果需求是要求去掉&再加加密key的,可以使用php的函數substr去掉最后的一個&符號) return md5($str);}

2.rsa公鑰加密和解密、私鑰解密私鑰加密,簽名和驗證

/**

* 公匙加密

* @param unknown_type $sourcestr 加密字符串

* @param unknown_type $publickey 公鑰

*/

function publickey_encodeing($sourcestr, $publickey)

{

//以下為了初始化公鑰,保證在您填寫公鑰時不管是帶格式還是不帶格式都可以通過驗證。

$publickey = str_replace("-----BEGIN PUBLIC KEY-----","",$publickey);

$publickey = str_replace("-----END PUBLIC KEY-----","",$publickey);

$publickey = str_replace("\n","",$publickey);

$publickey = '-----BEGIN PUBLIC KEY-----'.PHP_EOL.wordwrap($publickey, 64, "\n", true) .PHP_EOL.'-----END PUBLIC KEY-----';

$pubkeyid = openssl_get_publickey($publickey); // 生成密鑰資源id

if (openssl_public_encrypt($sourcestr, $crypttext, $pubkeyid, OPENSSL_PKCS1_PADDING)) //OPENSSL_PKCS1_PADDING采用RSA_PKCS1_PADDING填充模式

{

return $crypttext;

}

return FALSE;

}

/**

* 公匙解密

*/

function publickey_decodeing($crypttext, $publickey)

{

//以下為了初始化公鑰,保證在您填寫公鑰時不管是帶格式還是不帶格式都可以通過驗證。

$publickey = str_replace("-----BEGIN PUBLIC KEY-----","",$publickey);

$publickey = str_replace("-----END PUBLIC KEY-----","",$publickey);

$publickey = str_replace("\n","",$publickey);

$publickey = '-----BEGIN PUBLIC KEY-----'.PHP_EOL.wordwrap($publickey, 64, "\n", true) .PHP_EOL.'-----END PUBLIC KEY-----';

$pubkeyid = openssl_get_publickey($publickey); // 生成密鑰資源id

if (openssl_public_decrypt($crypttext, $sourcestr, $pubkeyid, OPENSSL_PKCS1_PADDING)) //OPENSSL_PKCS1_PADDING采用RSA_PKCS1_PADDING填充模式

{

return $sourcestr;

}

return FALSE;

}

/**

* 私匙解密

*/

function privatekey_decodeing($crypttext, $privatekey)

{

//以下為了初始化私鑰,保證在您填寫私鑰時不管是帶格式還是不帶格式都可以通過驗證。

$privatekey=str_replace("-----BEGIN RSA PRIVATE KEY-----","",$privatekey);

$privatekey=str_replace("-----END RSA PRIVATE KEY-----","",$privatekey);

$privatekey=str_replace("\n","",$privatekey);

$privatekey="-----BEGIN RSA PRIVATE KEY-----".PHP_EOL .wordwrap($privatekey, 64, "\n", true). PHP_EOL."-----END RSA PRIVATE KEY-----";

$prikeyid = openssl_get_privatekey($privatekey);

if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid, OPENSSL_PKCS1_PADDING))

{

return $sourcestr;

}

return FALSE;

}

/**

* 私匙加密

*/

function privatekey_encodeing($sourcestr, $privatekey)

{

//以下為了初始化私鑰,保證在您填寫私鑰時不管是帶格式還是不帶格式都可以通過驗證。

$privatekey=str_replace("-----BEGIN RSA PRIVATE KEY-----","",$privatekey);

$privatekey=str_replace("-----END RSA PRIVATE KEY-----","",$privatekey);

$privatekey=str_replace("\n","",$privatekey);

$privatekey="-----BEGIN RSA PRIVATE KEY-----".PHP_EOL .wordwrap($privatekey, 64, "\n", true). PHP_EOL."-----END RSA PRIVATE KEY-----";

$prikeyid = openssl_get_privatekey($privatekey);

if (openssl_private_encrypt($sourcestr, $crypttext, $prikeyid, OPENSSL_PKCS1_PADDING))

{

return $crypttext;

}

return FALSE;

}

/**RSA簽名

* $data待簽名數據

* $priKey商戶私鑰

* 簽名用商戶私鑰

* 使用MD5摘要算法

* 最后的簽名,需要用base64編碼

* return Sign簽名

*/

function Rsasign($data, $priKey) {

//轉換為openssl密鑰

$res = openssl_get_privatekey($priKey);

//調用openssl內置簽名方法,生成簽名$sign

openssl_sign($data, $sign, $res, OPENSSL_ALGO_MD5);

//釋放資源

openssl_free_key($res);

//base64編碼

$sign = base64_encode($sign);

return $sign;

}

/**RSA驗簽

* $data待簽名數據

* $sign需要驗簽的簽名

* $pubKey公鑰

* return 驗簽是否通過 bool值

*/

function Rsaverify($data, $sign, $pubKey) {

//轉換為openssl格式密鑰

$res = openssl_get_publickey($pubKey);

//調用openssl內置方法驗簽,返回bool值

$result = (bool)openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_MD5);

//釋放資源

openssl_free_key($res);

//返回資源是否成功

return $result;

}

總結

以上是生活随笔為你收集整理的cpp加密php,常用的数据加密规则算法(php包含MD5和RSA)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。