摘要:圖片加解密可以將人員身份證圖片通過修改字節(jié)加密,并且可將身份證信息也寫入圖片中。
圖片加解密
可以將人員身份證圖片通過修改字節(jié)加密,并且可將身份證信息也寫入圖片中。 可以直接將以下代碼復(fù)制到一個(gè)php文件中進(jìn)行測試。詳情請看代碼。
255, 2=>216, 3=>255, ……, 29124=>217 ] // 關(guān)閉一個(gè)已打開的文件指針 fclose($fileId); $tempArr = []; // 自定義加密規(guī)則 for ($i = 1; $i <= $fileSize; $i++) { $value = 0; if ($i % 3 == 0) { $value = 2; } elseif ($i % 5 == 0) { $value = 4; } elseif ($i % 7 == 0) { $value = 6; } $byte = $imgUnpack[$i]; // 圖片原始字節(jié) $byte = $byte + $value; // 經(jīng)過加密規(guī)則之后的字節(jié) // 打包成二進(jìn)制字符串 $tempArr[] = pack("C*", $byte); } $img = implode("", $tempArr); // 將解包之后的一維數(shù)組裝換成字符串 file_put_contents($filePath, $img); // 重寫圖片 } /** * 圖片對稱解密 * * @param [string] $filePath 圖片路徑 * @return void */ public function dec($filePath) { $fileId = fopen($filePath, "rb+"); $fileSize = filesize($filePath); $img = fread($fileId, $fileSize); $imgUnpack = unpack("C*", $img); fclose($fileId); $tempArr = []; // 開始解密 for ($i = 1; $i <= $fileSize; $i++) { $value = 0; if ($i % 3 == 0) { $value = 2; } elseif ($i % 5 == 0) { $value = 4; } elseif ($i % 7 == 0) { $value = 6; } $byte = $imgUnpack[$i]; $byte = $byte - $value; $tempArr[] = pack("C*", $byte); } $img = implode("", $tempArr); file_put_contents($filePath, $img); } /** * 圖片追加信息 * * @param [string] $filePath 圖片路徑 * @param [array] $cardmsg 需要添加的信息數(shù)組 * @param [array] $separate 分隔數(shù)組(類似于做一個(gè)加密分隔 key) * @return void */ public function encmsg($filePath, $cardmsg, $separate) { // 文檔中建議:為移植性考慮,強(qiáng)烈建議在用 fopen() 打開文件時(shí)總是使用 "b" 標(biāo)記。 $fileId = fopen($filePath, "rb+"); // 取出文件大小的字節(jié)數(shù) (29124) $fileSize = fileSize($filePath); // 讀取文件,返回所讀取的字符串 (讀出來的為二進(jìn)制序列) $img = fread($fileId, $fileSize); // 使用“無符號(hào)字符”,從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解包 // (pack、unpack用法)https://segmentfault.com/a/1190000008305573 $imgUnpack = unpack("C*", $img); // $fileSize 長度的一維數(shù)組 [ 1=>255, 2=>216, 3=>255, ……, 29124=>217 ] // 關(guān)閉一個(gè)已打開的文件指針 fclose($fileId); // 處理身份信息 $cardmsgJson = json_encode($cardmsg, JSON_UNESCAPED_UNICODE); $cardmsgUnpack = unpack("C*", $cardmsgJson); // 合并圖片字節(jié)、自定義分隔數(shù)組(類似手動(dòng)加 key 值)、身份信息字節(jié) $mergeArr = array_merge($imgUnpack, $separate, $cardmsgUnpack); $pack = []; foreach ($mergeArr as $k => $v) { $pack[] = pack("C*", $v); } $packStr = join("", $pack); file_put_contents($filePath, $packStr); // 重寫圖片 } /** * 獲取追加進(jìn)圖片的信息 * * @param [string] $filePath 圖片路徑 * @param [array] $separate 定義的分隔數(shù)組(分隔 key) * @return [string] 追加進(jìn)的圖片信息 */ public function decmsg ($filePath, $separate) { // 文檔中建議:為移植性考慮,強(qiáng)烈建議在用 fopen() 打開文件時(shí)總是使用 "b" 標(biāo)記。 $fileId = fopen($filePath, "rb+"); // 取出文件大小的字節(jié)數(shù) (29192) $fileSize = fileSize($filePath); // 讀取文件,返回所讀取的字符串 (讀出來的為二進(jìn)制序列) $img = fread($fileId, $fileSize); // 使用“無符號(hào)字符”,從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解包 $imgUnpack = unpack("C*", $img); // $fileSize 長度的一維數(shù)組 [ 1=>255, 2=>216, 3=>255, ……, 29192=>217 ] // 關(guān)閉一個(gè)已打開的文件指針 fclose($fileId); $imgUnpackStr = join(",",$imgUnpack); // 將一維數(shù)組轉(zhuǎn)換為字符串 $separateStr = implode(",", $separate); // 將一維數(shù)組轉(zhuǎn)換為字符串 $imgAndCardmsgArr = explode($separateStr, $imgUnpackStr); // 以自定義分隔符分隔出圖片字節(jié)和身份信息字節(jié) $cardmsgArr = explode(",", $imgAndCardmsgArr[1]); // 取出身份信息字節(jié) unset($cardmsgArr[0]); // 去除身份信息字節(jié)首位空白 (字符串轉(zhuǎn)數(shù)組時(shí)所留) $cardmsg = ""; foreach ($cardmsgArr as $k => $v) { $cardmsg .= pack("C*", $v); // 打包成二進(jìn)制文件字符串 } return json_decode($cardmsg, true); } } $encrypt = new Encrypt(); $path = "./001.jpg"; $separate = [255, 0, 255, 0, 255, 0, 255, 206, 210, 202, 199, 183, 214, 184, 244]; // 15字節(jié) $cardmsg = ["name" => "張三", "gender" => "男", "idcard" => 12345678910]; // 53字節(jié)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31762.html
摘要:非對稱加密算法的安全性往往需要基于數(shù)學(xué)問題來保障,目前主要有基于大數(shù)質(zhì)因子分解離散對數(shù)橢圓曲線等經(jīng)典數(shù)學(xué)難題進(jìn)行保護(hù)。消息認(rèn)證碼基于對稱加密,可以用于對消息完整性進(jìn)行保護(hù)。 Hash 算法與數(shù)字摘要 Hash (哈希或散列)算法它能將任意長度的二進(jìn)制明文串映射為較短的(通常是固定長度的)二進(jìn)制串(Hash值),并且不同的明文很難映射為相同的Hash值。 Hash 定義 Hash (哈希...
摘要:登錄注冊安全風(fēng)險(xiǎn)登錄注冊的風(fēng)險(xiǎn)點(diǎn)主要有四個(gè)暴力破解撞庫遍歷注冊用戶批量注冊。引入了驗(yàn)證碼機(jī)制同樣引入了額外的安全風(fēng)險(xiǎn),比如短信驗(yàn)證碼的短信炸彈風(fēng)險(xiǎn)圖形驗(yàn)證碼的可繞過可識(shí)別等。 概述 很多技術(shù)研發(fā)不了解安全,也不重視安全,只有在自己的服務(wù)器被黑掉、被掛馬、被脫褲才想起關(guān)注安全,但是這個(gè)時(shí)候,技術(shù)架構(gòu)已經(jīng)成型、代碼已經(jīng)在線上穩(wěn)定運(yùn)行,再亡羊補(bǔ)牢,改代碼、改策略,往往成本巨大、確收效很低。所...
摘要:另一方比如小明得到公鑰之后,雙方就可以通信。然而,中間人還是可能截獲公鑰,然后自己弄一對秘鑰,然后告訴小明說是小紅的公鑰。這樣,小亮在簽署小紅的身份證的時(shí)候,可以在小紅身份證后面附上自己的身份證。一般來說,自簽名的根身份證用于公司內(nèi)部使用。 前言 自從 Lets Encrypt 上線之后,HTTPS 網(wǎng)站數(shù)量占比越來越高,相信不久的未來就可以實(shí)現(xiàn)全網(wǎng) HTTPS,大部分主流瀏覽器也對 ...
閱讀 2137·2023-04-26 00:23
閱讀 807·2021-09-08 09:45
閱讀 2435·2019-08-28 18:20
閱讀 2542·2019-08-26 13:51
閱讀 1595·2019-08-26 10:32
閱讀 1392·2019-08-26 10:24
閱讀 2027·2019-08-26 10:23
閱讀 2196·2019-08-23 18:10