關於php中openssl_public_encrypt無填充的一個注
昨天在使用openssl_public_encrypt函式rsa加密一些資料傳輸的時候,怎麼都是加密失敗。
if (openssl_public_encrypt($data, $encrypted, $this->pubkey, OPENSSL_NO_PADDING)){ $data = base64_encode($encrypted); }else { $data = ''; }return $data;
把填充模式換成預設的話是加密成功的,我百度到的資料都是說加密的資料的長度問題,但我的資料是不定長度,而且對應介面使用的解密方式也固定是OPENSSL_NO_PADDING無填充方式,不能使用預設的填充模式。後面終於讓我在Stack Overflow上找到一個相同的問題
最好配合這篇文章blog食用
大致說明一下出現問題的原因,不一定完全準確,各位看官大概理解就好,在java(Android)中rsa加密選擇無填充模式如果不足128位元組的話,呼叫方法會自動幫你將資料用0(還是空格?)填充至128位元組再進行加密,但php跟java中沒有統一的填充標準,所以openssl_public_encrypt中並沒有幫我們做這一件事情,rsa又對加密資料長度有要求(這個與鑰模有關),從而導致加密失敗,這就需要我們自己手動去填充了。可以使用php函式str_pad
$data=str_pad($data, 128);
預設填充空格,加密後反過來也解密成功了。
作者:菜six歲
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2810848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 8個值得關注的PHP安全函式PHP函式
- 關於python中填充缺失值的問題Python
- 既然他人的成功與自己無關,何必過於關注他人?
- 一個關於php兩個陣列compare實踐PHP陣列
- 關於ACM中的無窮大ACM
- 關於 PHP 的資料型別 (一)PHP資料型別
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- php中關於會話機制的理解PHP會話
- Go 1.12中值得關注的幾個變化Go
- Go 1.17中值得關注的幾個變化Go
- 520特篇:有一個人在默默的關注你
- 關於PHP字串的一道面試題PHP字串面試題
- 分享學習php的非同步協程生態框架(swow),大家有興趣可以關注關注。PHP非同步框架
- 關於PHP的切換版本PHP
- 一個 Pillow 實現的影像填充函式函式
- 一個 Pillow 實現的影象填充函式函式
- 人工智慧的下一個五年,全球都在關注這十個人人工智慧
- 《簡明 PHP 教程》01 關於 PHPPHP
- 關於range的一個知識點
- 28個關於PHP核心技術的面試題,助力跳槽!PHP面試題
- 代瀟瑞部落格-專注於PHP學習PHP
- 關於 PHP 框架的簡單思考PHP框架
- 關於PHP佇列的問題PHP佇列
- 一個關於wait/notify與鎖關係的探究AI
- 記一次有意思的業務實現 → 單向關注是關注,雙向關注則成好友
- 開啟腦洞模式,一個關於安保無人機的未來構想模式無人機
- 關於PHP的OpenSSL的加密問題PHP加密
- 關於轉義符 在php正則中的匹配問題PHP
- 最近積累的幾個關於 PHP 類與 MySQL 的小問題PHPMySql
- 關於一些php面試之物件導向的相關知識PHP面試物件
- 關於SSM框架的一個簡單DemoSSM框架
- 關於performSelector:afterDelay:的一個坑及思考performSelector
- 關於Integer面試的一個問題面試
- Java關於IO的一個小工具Java
- 關於 JavaScript 字串的一個小知識JavaScript字串
- 一個關於JAVA GC的小實驗JavaGC
- 20萬DBA最關注的11個問題
- 2023年CDO需要關注的6個趨勢