加密使用 公鑰, 解密使用 私鑰
簽名使用 私鑰, 驗證使用 公鑰
rsa加密的明文最大長度117位元組,解密要求密文最大長度為128位元組.待加密的位元組數不能超過密鑰的長度值除以8再減去11,而加密後得到密文的位元組數,正好是密鑰的長度值除以8。這個規定很狗血,是以就出現了分片加密,網上很流行這個版本.很簡單,如果明文長度大于那個最大明文長度了,我就分片吧,保證每片都别超過那個值就是了.http://blog.csdn.net/centralperk/article/details/8538697

function splitdata($hexmacdatasource, $num = 16)
{
$len = 0;
$len = strlen($hexmacdatasource) / $num;
$ds = array();
for ($i = 0; $i < $len; $i++) {
$ds[] = substr($hexmacdatasource, 0, $num);
$hexmacdatasource = substr($hexmacdatasource, $num);
}
return $ds;
}
win32使用者:為了在windows環境中能用openssl子產品,你必須從php/win32二進制包的dll檔案夾中複制libeay32.dll檔案到windows系統中的system32檔案夾中。
環境變量

openssl_conf =d:\xampp\php\extras\openssl\openssl.cnf
phpseclib

<?php
include('crypt/rsa.php');
$rsa = new crypt_rsa();
//$rsa->createkey(); 生成公鑰和私鑰
$rsa->loadkey(file_get_contents('privatekey.txt'));
$rsa->setencryptionmode(crypt_rsa_encryption_pkcs1);
echo $rsa->decrypt(file_get_contents('ciphertext.txt'));
1.php需要開啟open_ssl.dll 必須安裝有有效的 openssl.cnf 以保證此函數正确運作
-days:證書過期時間,一定要加上這個參數,預設的證書過期時間是30天,一般我們不希望證書這麼短就過期,是以寫上比較合适的天數,例如這裡的3650(10年)。
事實上,這一行指令包含了好幾個步驟(我研究下面這些步驟的原因是我手頭已經由一個private_key.pem私鑰了,想直接用這個來生成x509證書,也就是用到了下面的2-3)
1)建立私鑰

openssl genrsa -out private_key.pem 1024
2)建立證書請求(按照提示輸入資訊)

openssl req -new -out cert.csr -key private_key.pem
3)自簽署根證書

openssl x509 -req -in cert.csr -out public_key.der -outform der -signkey private_key.pem -days 3650
android下的rsa
2)建立公鑰

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3)将rsa私鑰轉換成 pkcs8 格式

openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
sdf

rsa加密 [email protected]&username=1&password=123&confirm_password=123
解密後再parse_str($params, $aparams);