12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace crypt;
- class Des {
-
- /**
- * @uses des 加密 cbc模式
- * @param string $str
- * @param string $key
- * @return string
- */
- public static function encrypt($str, $key)
- {
- $str = self::pkcsPadding($str, 8);
- $v = pack('H*', "1234567890abcdef");
- $key = str_pad($key, 8, '0'); //3DES加密将8改为24
- $sign = openssl_encrypt($str, 'DES-CBC', $key,OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $v);
- $sign = base64_encode($sign);
- return $sign;
- }
-
-
- /**
- * @uses des解密 cbc模式
- * @param string $encrypted
- * @param string $key
- * @return string
- */
- public static function decrypt($encrypted, $key)
- {
- $encrypted = base64_decode($encrypted);
- $v = pack('H*', "1234567890abcdef");
- $key = str_pad($key, 8, '0'); //3DES加密将8改为24
- $sign = @openssl_decrypt($encrypted, 'DES-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $v);
- $sign = self::unPkcsPadding($sign);
- $sign = rtrim($sign);
- return $sign;
- }
-
- /**
- * @uses 填充
- * @param string $str
- * @param int $blocksize
- * @return string
- */
- private static function pkcsPadding($str, $blocksize)
- {
- $pad = $blocksize - (strlen($str) % $blocksize);
- return $str . str_repeat(chr($pad), $pad);
- }
-
- /**
- * @uses 去填充
- * @param string $str
- * @return string
- */
- private static function unPkcsPadding($str)
- {
- $pad = ord($str{strlen($str) - 1});
- if ($pad > strlen($str)) {
- return false;
- }
- return substr($str, 0, -1 * $pad);
- }
-
- }
|