openssl php api,PHP7使用openssl解密易班API中的用户数据
PHP7使用openssl解密易班API中的用戶數據
一、mcrypt擴展解密
自從PHP版本更新到了7.1以上以后,mcrypt擴展被廢棄,使用mcrypt擴展會出現如下圖的報錯。只能使用openssl來代替。
然而易班輕應用提供的還是舊版本的mcrypt擴展,這將導致php版本升級到7.1以上的版本會提示沒有這個函數,以下是易班文檔中心提供的解密代碼,使用的加密方式為AES-128-CBC。<?php
$postObject = addslashes($_GET["verify_request"]);//獲取verify_request參數值
$postStr = pack("H*", $postObject);
$appID = "";//應用appID
$appSecret = "";//應用appSecret
$postInfo = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $appSecret, $postStr, MCRYPT_MODE_CBC, $appID);
$postInfo = rtrim($postInfo);
?>
二、改為openssl解密
測試過程中將以上代碼使用openssl該寫后使用AES-128-CBC解密失敗,后將其改為AES-256-CBC后,option選擇OPENSSL_RAW_DATA|OPENSSL_NO_PADDING或者1|3均可解密成功(這里測試必須使用2個選項否則解密失敗)。<?php
$data = "5638b78a47bab5db7ec413d2b1dff605fe0782d51683a7cf20b5341c021eb11abb1f057260bf45c6a942a5410c4ee16c17828cc64c7f0cecce722af1ba50921a6b2a1b1b670f690809f20cca10abe17ea87c2d63fb7448f1fbd23173239c2f0017988b06e282436f12315d0524639e9332b9fde760a30e9eecb4a73f8f19890c56923727d02318a0738a9d1f85466d3c0e8d63e3a244fe90dbfa95d0854e2e46ed4bbb800accb6c99af1bc2c0ae5111f0defc78cd76088a0dfe17eec3befa18c91bb5fc4b5c3fe10e659e7e646b9a5ea31c5e1630debddc24c9fa79e60d1c3520781bcb77840692d0c399dc2a7309c545a6fc0786b5aba101377e92bf484efb6";
$postStr = pack("H*", $data);
//16位key密鑰
$appID = '5a78142f61c73774';
//32位的iv向量
$appSecret ='d2eb797fd023d049a53a033c1d359971';
$pinfo = openssl_decrypt($postStr,"AES-256-CBC",$appSecret,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$appID);
print_r($pinfo);
?>
解密后的結果如下:{
"visit_time": 1566317331,
"visit_user": {
"userid": "12543770",
"username": "雨落凋殤",
"usernick": "雨落凋殤",
"usersex": "M"
},
"visit_oauth": {
"access_token": "ca2441e60276fab919c12150dd15d9fade201e48",
"token_expires": "1566922131"
}
}
三、總結
經過上面的mcrypt的解密方式AES-128-CBC轉換為openssl后必須使用AES-256-CBC才能解密成功。博主也沒弄清具體原因。本文如有問題歡迎評論指正!
總結
以上是生活随笔為你收集整理的openssl php api,PHP7使用openssl解密易班API中的用户数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英伟达推出新一代 GH200 Grace
- 下一篇: php 档案,PHP 档案包 (PHAR