導航:首頁 > 文檔加密 > phprsa加密類

phprsa加密類

發布時間:2022-02-17 01:23:32

A. php中怎麼使用rsa實現加密解密代碼詳解

這個問題字數超出了我待會追答,答題不易,互相理解,您的採納是我前進的動力,感謝您。希望回答對你有幫助,如果有疑問,在後盾人上有詳解

B. 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;}

C. ThinkPHP Rsa加密類怎麼用

<?php
namespacelibs;

classRsa{
privatestatic$PRIVATE_KEY;
privatestatic$PUBLIC_KEY;
function__construct($pubKey='',$privKey=''){
self::$PUBLIC_KEY=$pubKey;
self::$PRIVATE_KEY=$privKey;
}


($input)
{
$remainder=strlen($input)%4;
if($remainder){
$padlen=4-$remainder;
$input.=str_repeat('=',$padlen);
}
returnbase64_decode(strtr($input,'-_','+/'));
}


($input)
{
returnstr_replace('=','',strtr(base64_encode($input),'+/','-_'));
}


(){
$privKey=self::$PRIVATE_KEY;
returnopenssl_pkey_get_private($privKey);
}


(){
$pubKey=self::$PUBLIC_KEY;
returnopenssl_pkey_get_public($pubKey);
}


($data)
{
if(!is_string($data)){
returnnull;
}
returnopenssl_private_encrypt($data,$encrypted,self::getPrivateKey())?self::urlsafeB64Encode($encrypted):null;
}


($encrypted)
{
if(!is_string($encrypted)){
returnnull;
}
return(openssl_private_decrypt(self::urlsafeB64Decode($encrypted),$decrypted,self::getPrivateKey()))?$decrypted:null;
}


($data)
{
if(!is_string($data)){
returnnull;
}
returnopenssl_public_encrypt($data,$encrypted,self::getPublicKey())?self::urlsafeB64Encode($encrypted):null;
}


($encrypted)
{
if(!is_string($encrypted)){
returnnull;
}
return(openssl_public_decrypt(self::urlsafeB64Decode($encrypted),$decrypted,self::getPublicKey()))?$decrypted:null;
}
}
?>

D. 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

E. php 如何生成rsa加密的公鑰和私鑰

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

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

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

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

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

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

G. php中RSA加密,明文超長,需要分段加密該怎麼做

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

H. 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

I. php rsa公鑰加密的問題!

公鑰不對,你檢查一下,或者是常量的問題

閱讀全文

與phprsa加密類相關的資料

熱點內容
腳本提取源碼器 瀏覽:928
smo源碼 瀏覽:875
為什麼要搭建單獨伺服器 瀏覽:478
編譯器有什麼控制 瀏覽:891
希爾伯特pdf 瀏覽:645
php數組全數字 瀏覽:645
解密塔羅牌小程序源碼 瀏覽:862
聚合跑分源碼 瀏覽:553
注冊dns伺服器寫什麼 瀏覽:879
linux安裝deb包 瀏覽:521
電腦盤文件夾如何平鋪 瀏覽:267
相機卡滿了沒文件夾 瀏覽:751
如何批量快速壓縮視頻 瀏覽:432
我的世界如何加入ice伺服器 瀏覽:873
兄弟cnc編程說明書 瀏覽:204
php閃電入門教程學習 瀏覽:152
金岳霖邏輯pdf 瀏覽:938
linuxtomcat線程 瀏覽:77
pboc長度加數據加密 瀏覽:188
英雄聯盟國際服手游怎麼下安卓 瀏覽:299