PHP可以使用mcrypt_encrypt进行DES加密与解密,但实际上操作,你会发现它与JAVA的DES加密出来的字符串,有些不同。基本上是前半段一样,后半段不一样。找到PHP官方网站上对这个函数的文档,有人回复了,并给出了代码。经测,这样加密解密就跟JAVA中的兼容了。
If you want to be interoperable with other PKCS#7 padding implementations, like the Legion of the Bouncy Castle Javacryptography APIs, you should always pad, that is a 8-byte (block size)padding should be added, even if not necessary
PHP 代码复制内容到剪贴板 <?phpfunctionencrypt($str,$key){$block= mcrypt_get_block_size('des','ecb');$pad=$block- (strlen($str) %$block);$str.=str_repeat(chr($pad),$pad);returnmcrypt_encrypt(MCRYPT_DES,$key,$str, MCRYPT_MODE_ECB);}functiondecrypt($str,$key){$str= mcrypt_decrypt(MCRYPT_DES,$key,$str, MCRYPT_MODE_ECB);$block= mcrypt_get_block_size('des','ecb');$pad= ord($str[($len=strlen($str)) - 1]);returnsubstr($str, 0,strlen($str) -$pad);}?>
如果觉得《PHP的DES加解密函数 与JAVA兼容》对你有帮助,请点赞、收藏,并留下你的观点哦!