最近公司專案需要用php對資料進行3des加密,輸入輸出為十六進製制。網上的方法大部分都是基於mcrypt擴充套件庫,php7開始已經廢棄,所以使用openssl擴充套件進行加密。貼上**記錄一下,ecb模式:
class threedesutil
}catch (exception $exception)
return $dest;
}/**
* 加密,ecb模式
* @param $key 金鑰
* @param $src 被加密的資料緩衝區(明文) 十六進製制
* @return null|string 加密後的密文 十六進製制
*/public static function encryptmode($key, $src)else
}catch (exception $exception)
return null;
}/** 解密,ecb模式
* @param $key 加密使用的金鑰
* @param $src 加密後的密文 十六進製制
* @return string 解密後的明文 十六進製制
*/public static function decryptmode($key,$src)else
}catch (exception $exception)
}private static function hexstringtobytes($hexstring)
while ($i<$len)
return implode($buf);
}private static function convertbytetohexstring($bytes)
if (ord($ch) >= ord('a') && ord($ch) <= ord('f'))
if (ord($ch) >= ord('a') && ord($ch) <= ord('f'))
throw new invalidargumentexception('invalid hex digit:'.$ch);
}}echo threedesutil::encryptmode('010203040506070818082322380201f2','a1a2a3a4a5a6a7af');
//echo threedesutil::decryptmode('010203040506070818082322380201f2','19bd70bcf1855728');
得到結果和工具測試結果一樣。加密結果為:19bd70bcf1855728 DES ECB模式加密C 實現
貼一段 用的時候好找。引數 明文陣列,明文長度,密文陣列,密文長度。功能 加密。include stdio.h include stdlib.h include string.h include openssl des.h des ecb加密方式 8位金鑰,不足8位的右補0x00 加密內容8位補齊,...
php實現工廠模式
設計模式 使用php實現工廠方法模式 概要 建立型模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類 gof95 結構圖 主要角色 抽象產品 product 角色 詳細產品物件共同擁有的父類或介面 詳細產品 concrete pro...
php實現工廠模式
設計模式 使用php實現工廠方法模式 概要 建立型模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類 gof95 結構圖 主要角色 抽象產品 product 角色 詳細產品物件共同擁有的父類或介面 詳細產品 concrete pro...