JAVA和PHP的AES加密有什么區別?
涉及到數據加密場景的項目都離不開加密算法,編程語言那么多,每款語言都有自己的加密實現,這就會導致不同開發語言間即使是同一加密算法,可能也無法相互間加解密。
什么是AES加密?AES是高級加密標準的英文縮寫,它是對稱加密(加密和解密用的是同一套密鑰)算法中最為流行的算法之一,在安全性上優于DES(DES安全性較差)。比如說微信小程序加密方式中就用到了AES加密。
AES加密特性1、AES密鑰長度一般是:128位、192位、256位
我們常說的AES128指的就是AES加密密鑰長度是128位。密鑰長度越長,安全性越高。
2、AES是分組加密的
AES會對固定大小的分組數據進行處理,每次處理16字節的輸入,當數據不足16字節長時,就需要進行填充。
AES加密結果會受到加密模式及填充方式影響上面說到了,AES是分組加密的,當待加密數據長度不定時,為了能在各種場景下安全的使用分組密碼,就需要設置工作模式和填充方式。
1、AES加密模式有:ECB(電碼本模式)、CBC(密碼分組鏈模式)、OFB(輸出反饋模式)、CTR(計數器模式)等。
2、AES填充方式有:NoPadding、PKCS5、PKCS7等。
雖說都是AES加密算法,但是選擇不同的加密模式和填充方式就直接影響了數據的加密解密正確性!不同編程語言在實現AES算法時,對于默認的加密模式和填充方式是不同的,所以也就導致了在Java中的AES加密串無法在PHP中進行解密!
如果要確保不同語言間AES加密解密的互通,那加密模式和填充方式必須一致!
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!上一篇菲律賓3000p什么意思
下一篇AED是什么貨幣標志