當前位置:首頁 » 編程語言 » phprsa

phprsa

發布時間: 2022-01-10 17:38:43

『壹』 php如何生成帶rsa的私鑰文件

你可以試下命令行的ssh–keygen,需要裝ssh服務

『貳』 php rsa密鑰經過pkcs8編碼的怎麼進行簽名

簽名代碼:

staticprotectedfunctionsign($data,$priKey){

$res=openssl_get_privatekey($priKey);
//調用openssl內置簽名方法,生成簽名$sign
openssl_sign($data,$sign,$res);
//釋放資源
openssl_free_key($res);
//base64編碼
$sign=base64_encode($sign);
return$sign;
}

『叄』 如何用php做RSA用公鑰加密,只需要加密,已有明文+公鑰

functionrsa_encode($pwd){
$publicstr=file_get_contents('/path/to/public.key');
$publickey=openssl_pkey_get_public($publicstr);//讀取公鑰
$r=openssl_public_encrypt($pwd,$encrypted,$publickey);
if($r){
return$encrypted
}
returnfalse;
}

『肆』 RSA加密解密網在PHP中.問題,怎麼解決

舉例:

function rsaSign($data,$private_key) { $res = openssl_get_privatekey($private_key); // $data=sha1($data); //sha1加密(如果需要的話,如果進行加密,則對方也要進行加密後做對比) openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA1);//加簽,可以指定加密方式 openssl_free_key($res); //base64編碼 $sign = base64_encode($sign); return $sign;}

『伍』 php 如何生成rsa加密的公鑰和私鑰

用Zend的加密吧,但是還是可以解密的,這也沒辦法,凡是對稱加密或非不可逆的加密演算法,均可以解密,這只是時間問題。

特別是沒有密碼的加密(不可逆除外)。

可以這樣,使用AES加密,再用GZIP壓縮,然後運行時解密,在eval那些代碼。

前提是每個加密的文件的密碼都不同,要購買才可以解密運行。

『陸』 php中RSA加密,明文超長,需要分段加密該怎麼做

這方面的話我不是很了解,一般來說,加密分為兩個部分,一個是非對稱加密,一個是對稱加密,使用對稱加密加密正文信息,使用非對稱加密加密對稱加密的密鑰,然後發送加密數據(消息摘要和數字簽名就不討論了),這是正規的數據加密策略,對稱加密默認支持大數據分段加密策略,你只需要從介面中完成加密即可,而且對稱加密速度比非對稱加密快很多,如果你需要使用這個策略建議使用AES。
如果你不願意使用對稱加密,只願意使用AES加密,那你就必須喪失速度了,而且自己處理分段加密,因為RSA加密通常是117個位元組就要分段(這個長度可能和密鑰長度有關,我是用的介面是117),你需要自己把數據變成N個117位元組的數據段來完成加密,解密也需要自己完成位元組拼裝。詳細還是建議你去後盾人平台去看看視頻教學吧,那裡面有的,講的很清楚。

『柒』 php 怎麼生成rsa加密的公鑰和私鑰

附上出處鏈接:http://bbs.csdn.net/topics/370014844

四,用PHP生成密鑰

PEAR::Crypt_RSA的Crypt_RSA_KeyPair類可以生成密鑰。調用步驟如下:

require_once('Crypt/RSA.php');
$math_obj = &Crypt_RSA_MathLoader::loadWrapper();
$key_pair = new Crypt_RSA_KeyPair($key_lenth);
if (!$key_pair->isError()){
$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();
$e =$math_obj->hexstr($math_obj->bin2int($public_key->getExponent()));
$d =$math_obj->hexstr($math_obj->bin2int($private_key->getExponent()));
$n =$math_obj->hexstr($math_obj->bin2int($public_key->getMolus()));
}

hexstr()是自己添加的函數,用來把十進制字元串轉換為十六進制。對Crypt_RSA_Math_GMP很簡單,只需:

function hexstr($num){
return gmp_strval($num,16);
}

對Crypt_RSA_Math_BCMath略麻煩些:

function hexstr($num){
$result = '';
do{
$result = sprintf('%02x',intval(bcmod($num,256))).$result;
$num = bcdiv($num, 256);
}while(bccomp($num, 0));
return ltrim($result,'0');
}

五,用php生成密鑰(二)

為了提高加密速度,一般選一個較小的e。比較常用的是3、17、257、65537幾個素數。

generate()生成密鑰的演算法是依次計算p,q,n,e,d。因此做了如下改動,以便可以自己選e值:

原來的:
function Crypt_RSA_KeyPair($key_len, $wrapper_name = 'default', $error_handler = '')
改後增加一個參數e:
function Crypt_RSA_KeyPair($key_len, $e = null, $wrapper_name = 'default', $error_handler = '')
這個函數調用generate()。效應地:
function generate($key_len = null)
也增加一個參數e:
function generate($key_len = null, $e = null)

把CRYPT_RSA-1.0.0的KeyPair.php中屬於generate()的245~271行改動順序,由e確定p和q:

if($e != null&&$this->_math_obj->cmpAbs($e,2)>0)
$e = $this->_math_obj->nextPrime($this->_math_obj->dec($e));//取個素數
else
{
while(true)
{
$e = $this->_math_obj->getRand($q_len, $this->_random_generator);
if ($this->_math_obj->cmpAbs($e,2)<=0)
continue;
$e = $this->_math_obj->nextPrime($this->_math_obj->dec($e));
break;
}
}
do{
$p = $this->_math_obj->getRand($p_len, $this->_random_generator, true);
$p = $this->_math_obj->nextPrime($p);
do{
do{
$q = $this->_math_obj->getRand($q_len, $this->_random_generator, true);
$tmp_len = $this->_math_obj->bitLen($this->_math_obj->mul($p, $q));
if ($tmp_len < $key_len)
$q_len++;
elseif ($tmp_len > $key_len)
$q_len--;
} while ($tmp_len != $key_len);
$q = $this->_math_obj->nextPrime($q);
$tmp = $this->_math_obj->mul($p, $q);
} while ($this->_math_obj->bitLen($tmp) != $key_len);
// $n - is shared molus
$n = $this->_math_obj->mul($p, $q);
// generate public ($e) and private ($d) keys
$pq = $this->_math_obj->mul($this->_math_obj->dec($p), $this->_math_obj->dec($q));
if($this->_math_obj->isZero($this->_math_obj->dec($this->_math_obj->gcd($e, $pq))))
break;
}while(true);

(網易的服務真體貼啊,連pre標記裡面的東西都給改。還改不好)這樣,如果要生成e為3的1024位密鑰,可以如下調用:

$key_pair = new Crypt_RSA_KeyPair(1024,3);

六,干什麼用

加密比較重要的數據。比如注冊時用戶輸入的密碼。
登錄時把密碼hmac一下就可以防止重放攻擊(replay attack)了。對注冊不存在這種攻擊,但有密碼泄露的危險。上傳密碼hash那點安全性根本不算什麼。這個可以用RSA加密解決。
不過,對中間人攻擊還是沒辦法。

另外一個

http://www.mingup.cn/php/2011/0121/101568.html

『捌』 php rsa/no/padding加密怎麼實現

Java和PHP RSA加密實現互通
1:通過openssl 生成公鑰和密鑰文件(Linux)
(1) 生產私鑰文件命令
openssl genrsa -out rsa_private_key.pem 1024
(2) 通過私鑰文件生成公鑰命令
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

(3) 將傳統格式的私鑰轉換成 PKCS#8 格式的的密鑰文件
openssl pkcs8 -topk8 -in rsa_private_key.pem -outpkcs8_rsa_private_key.pem -nocrypt

『玖』 php rsa 公鑰私鑰怎麼生成啊,生成後如何才能加密解密網上的資料很多但都是亂七八糟的

http://blog.csdn.net/linvo/article/details/8543118
別人的,寫的挺詳細的,可以參考下,裡面還有demo

熱點內容
單片機android 發布:2024-09-20 09:07:24 瀏覽:765
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:664
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:311
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:289
手機版網易我的世界伺服器推薦 發布:2024-09-20 08:41:52 瀏覽:817
安卓x7怎麼邊打游戲邊看視頻 發布:2024-09-20 08:41:52 瀏覽:162
sql資料庫安全 發布:2024-09-20 08:31:32 瀏覽:94
蘋果連接id伺服器出錯是怎麼回事 發布:2024-09-20 08:01:07 瀏覽:507
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:658
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:481