之前公司使用5.3 5.4的php版本,使用mcrypt_encrypt加密,存在KEY長度為9位的秘鑰,也是可以正常使用的,
但是現在將PHP版本更新到7之后,發現有些商戶傳過來的參數無法解密,結果發現是PHP5.6以后不支持8位以上的無效長度KEY
(應該是8的整數倍的KEY是能用的,如8,16,32,64,不過沒有嘗試,如果不強制要求8位就足夠了)
資料:
mcrypt_encrypt 加密失敗
當參數密鑰key長度大於8位時,函數返回false,PHP 5.6版本后,不再接受無效長度的 key and iv 參數
如果參數密鑰key長度大於8位,mcrypt_decrypt() 函數會產生警告並且返回 FALSE,導致加密失敗。
解決方案: 將密鑰長度截取到8位,這樣能兼容5.6后的PHP版本。