1. 程式人生 > >相容JAVA的PHP加密解密DES演算法

相容JAVA的PHP加密解密DES演算法

今天一直折騰和JAVA對接資料加密解密的問題。

剛開始使用TEA的加密演算法,但是JAVA那邊和PHP端加密出來的結果不一樣

只能修改演算法,將演算法修改成了DES的加密演算法

但是PHP需要裝一個mcrypt擴充套件,這點有點煩人

看程式碼吧:

	/**
	 * 加密
	 * @param string $str 字串
	 * @param string $key 金鑰
	 */
	public static function encrypt($str, $key)  {
		$block = mcrypt_get_block_size('des', 'ecb');
		$pad = $block - (strlen($str) % $block);
		$str .= str_repeat(chr($pad), $pad);
		$str = mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
		return base64_encode($str);
	}

	/**
	 * 解密
	 * @param string $str 字串
	 * @param string $key 金鑰
	 */
	public static function decrypt($str, $key) {
		$str = base64_decode($str);
		$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
		$block = mcrypt_get_block_size('des', 'ecb');
		$pad = ord($str[($len = strlen($str)) - 1]);
		return substr($str, 0, strlen($str) - $pad);
	}