當前位置:首頁 » 密碼管理 » php密鑰加密

php密鑰加密

發布時間: 2022-09-03 14:47:15

python3的密鑰加密php的密鑰加密結果不一樣,PHP的代碼不變,怎麼實現讓python3密鑰加密後和PHP的一樣

明顯python代碼有誤用散列的情況...

將錯就錯可得php

<?php//ver>=5.1.2
$pkey="91ebf1be3-OptServiceAPI-d580ea24";
$text="admin";
$s=hash('sha256',$pkey.$text);
echo$s;

剛沒看到是要py匹配php...

手上沒有低版本測,所以這個代碼要py 3.7以上才能運行

importhmac
pkey="91ebf1be3-OptServiceAPI-d580ea24";
text="admin";
s=hmac.digest(pkey.encode("UTF-8"),text.encode("UTF-8"),"sha256")
print(s.hex())


❷ PHP SHA256怎麼帶密鑰加解密

SHA256是數據摘要演算法,是不可逆的,解不了密,一整本小說加密了剩下256bit 這要能解密不是逆天了

❸ 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中哪種加密方式好

aes/des加密速度快,適合大量數據,des容易破解,一般用3重des,後來又出現了更快更安全的aes
rsa是公鑰加密,速度慢,只能處理少量數據,優點是公鑰即使在不安全的網路上公開,也能保證安全
常見情況是雙方用rsa協商出一個密鑰後通過aes/3des給數據加密。
bcrypt,是一個跨平台的文件加密工具。由它加密的文件可在所有支持的操作系統和處理器上進行轉移。它的口令必須是8至56個字元,並將在內部被轉化為448位的密鑰。
綜上所述用bcrypt還是好點,最好用md5安全性高,更多問題到後盾網論壇問題助專區http://bbs.hounwang.com/

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

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

❻ PHP 加密要怎麼搞

如果是不需要可逆的加密,可以用md5(標准密鑰長度128位)、sha1(標准密鑰長度160位)、md4、CRC-32。這個函數是將字元串變成32個長度的不重復的亂碼,多用於存儲用戶密碼。
如果需要可逆的加密,可以使用base64函數,但是容易被人反過來看到原文。復雜一點可以用openssl拓展生成密鑰,利用手中的密鑰生成。

❼ 關於php des 加密 密鑰長度問題

php5.6的key長度要求是32位元組的,你這個明顯不滿足要求的。
參考以下寫法:
<?php
# --- ENCRYPTION ---

# the key should be random binary, use scrypt, bcrypt or PBKDF2 to
# convert a string into a key
# key is specified using hexadecimal
$key = pack('H*', "");

# show key size use either 16, 24 or 32 byte keys for AES-128, 192
# and 256 respectively
$key_size = strlen($key);
echo "Key size: " . $key_size . "\n";

$plaintext = "This string was AES-256 / CBC / ZeroBytePadding encrypted.";

# create a random IV to use with CBC encoding
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

# creates a cipher text compatible with AES (Rijndael block size = 128)
# to keep the text confidential
# only suitable for encoded input that never ends with value 00h
# (because of default zero padding)
$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
$plaintext, MCRYPT_MODE_CBC, $iv);

# prepend the IV for it to be available for decryption
$ciphertext = $iv . $ciphertext;

# encode the resulting cipher text so it can be represented by a string
$ciphertext_base64 = base64_encode($ciphertext);

echo $ciphertext_base64 . "\n";

# === WARNING ===

# Resulting cipher text has no integrity or authenticity added
# and is not protected against padding oracle attacks.

# --- DECRYPTION ---

$ciphertext_dec = base64_decode($ciphertext_base64);

# retrieves the IV, iv_size should be created using mcrypt_get_iv_size()
$iv_dec = substr($ciphertext_dec, 0, $iv_size);

# retrieves the cipher text (everything except the $iv_size in the front)
$ciphertext_dec = substr($ciphertext_dec, $iv_size);

# may remove 00h valued characters from end of plain text
$plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
$ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);

echo $plaintext_dec . "\n";
?>

❽ php有哪些需要密匙的加密演算法

函數名稱:encrypt
函數作用:加密解密字元串
使用方法:
加密 :encrypt('str','E','qingdou');
解密 :encrypt('被加密過的字元串','D','qingdou');

❾ 如何對PHP文件進行加密

超級加密3000就可以
1、下載安裝超級加密3000這款軟體
2、在這個文件上面右鍵單擊,選擇超級加密
3、然後在彈出的密碼輸入窗口輸入需要設置的密碼,然後點擊確定就可以了

❿ php中aes加密和rsa加密的區別

這個跟php沒有關系,單純的是兩個密碼學的演算法。如果真想搞清楚區別,你需要有密碼學的基礎知識。

我簡單說一下,這兩個都是標準的密碼學演算法,應用廣泛。AES是一個對稱加密演算法,常常用於對數據進行加密,RSA是一個非對稱(公鑰)加密演算法,常常用於對AES加密用的密鑰進行加密,或者進行數字簽名等。

至於對稱加密演算法和非對稱加密演算法的區別說起來就越來越多了。你只要知道以下事實就好:

  1. 對稱加密演算法加解密密鑰相同,而非對稱加密演算法加解密密鑰不同

  2. 對稱加密演算法相對於非對稱加密演算法而言往往加解密速度很快

  3. 非對稱加密演算法具有任何有公鑰的人都能加密數據,但是只有有私鑰的人才能解密數據的特點

熱點內容
小米9se買哪個配置 發布:2025-07-05 07:57:32 瀏覽:361
金山快盤拒絕訪問 發布:2025-07-05 07:42:29 瀏覽:249
新款賓士c級買哪個配置好 發布:2025-07-05 07:41:46 瀏覽:288
android長寬比 發布:2025-07-05 07:34:11 瀏覽:686
買新車有哪些隨車必須配置的東西 發布:2025-07-05 07:26:26 瀏覽:934
刷機的時候為什麼要密碼 發布:2025-07-05 07:25:43 瀏覽:435
快速計演算法怎麼算 發布:2025-07-05 07:08:12 瀏覽:141
php判斷數組長度 發布:2025-07-05 07:07:26 瀏覽:149
蘋果電腦取消共享文件夾 發布:2025-07-05 07:06:00 瀏覽:352
機器學習演算法應用 發布:2025-07-05 07:01:17 瀏覽:36