ThinkPHP rsa非對稱加密類

2021-08-04 12:48:23 字數 1696 閱讀 8615

公鑰加密後的字串是一直變化的,但是用私鑰解密後的內容仍然是相同的,這是為了加密資料使用的。

私鑰加密的字串是不會變化的,即使暴露在外網上別人擷取時如果沒有公鑰也是看不出來內容的,僅允許給予公鑰的第三方來解密並看到內容,實際作用相當於簽名功能,如果能拿到未加密的內容,說明一定是信任方的資料,因為有他的簽名啊。

其實這種非對稱加密技術可以用於單點登入中去,安全級別高,能解密獲取到內容應該就是信任方的資料。

<?php

namespace common\org;

class rsacrypt

public static function verifydata($origindata, $decryptdata)

/*** 生成公鑰私鑰檔案

*///建立公鑰

$res = openssl_pkey_new();//array('private_key_bits'=>512) 這一串引數不加,否則只能加密54個長度的字串

//提取私鑰

openssl_pkey_export($res, $privatekey);

//生成公鑰

$public_key = openssl_pkey_get_details($res);

$publickey = $public_key['key'];

trycatch(\exception $e)

return $result;

}/**

* 用私鑰加密資料

* @param $data string 需要加密的字串(最好不要超過200個字元)

*/$encryptdata = '';

//用私鑰加密

if (openssl_private_encrypt($data, $encryptdata, $privatekey)) else

return $result;

}/**

* 用公鑰解密資料

* @param $data string 需要解密的字串(最好不要超過200個字元)

*///解密資料

$decryptdata = '';

if (openssl_public_decrypt($data, $decryptdata, $publickey)) else

return $result;

}/**

* 用公鑰加密資料

* @param $data string 需要加密的字串(最好不要超過200個字元)

*/public static function publicencrypt($data, $publickey)

$encryptdata = '';

//用私鑰加密

if (openssl_public_encrypt($data, $encryptdata, $publickey)) else

return $result;

}/**

* 用私鑰加密資料

* @param $data string 需要解密的字串(最好不要超過200個字元)

*///解密資料

$decryptdata = '';

if (openssl_private_decrypt($data, $decryptdata, $privatekey)) else

return $result;

}}

Android Keystore 對稱 非對稱加密

android資料加密 anroid資料加密方式 android 提供了 keystore 等可以長期儲存和檢索加密金鑰的機制,android keystore 系統特別適合於儲存加密金鑰。它提供了限制何時以何種方式使用金鑰的方法,比如使用金鑰時需要使用者認證或限制金鑰只能在加密模式下使用。乙個應用...

加密(對稱 非對稱)

一 對稱加密 symmetric cryptography 對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secret key 這種方法在密碼學中叫做對稱加密演算法。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密...

非對稱加密(1)非對稱加密原理

現在我們已經知道對稱加密的乙個最大的問題是如何安全地傳輸金鑰,並且在對稱加密的體系下找不到好的解決方案。1976 年,美國學者 dime 和henman 為解決資訊公開傳送和金鑰管理問題,提出一種新的金鑰交換協議,允許在不安全 上的通訊雙方交換資訊,安全地達成一致的金鑰,這就是 公開金鑰系統 相對於...