如何用PHP代码实现这个Java代码所实现的

2025-03-10 17:58:07
推荐回答(1个)
回答1:

JavaAes类,用php实现方法:importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;publicclassAESSecurityUtil{privatestaticfinalStringAES="AES";privatestaticfinalStringCHARSET_NAME="utf-8";privatestaticSecretKeySpecgetKey(Stringpassword)throwsNoSuchAlgorithmException{KeyGeneratorkgen=KeyGenerator.getInstance(AES);SecureRandomrandom=SecureRandom.getInstance("SHA1PRNG");random.setSeed(password.getBytes());kgen.init(128,random);SecretKeysecretKey=kgen.generateKey();byte[]enCodeFormat=secretKey.getEncoded();SecretKeySpeckey=newSecretKeySpec(enCodeFormat,AES);returnkey;}publicstaticStringencode(Stringstr,Stringpassword){byte[]arr=encodeToArr(str,password);returnbyteArrToString(arr);}privatestaticbyte[]encodeToArr(Stringstr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);byte[]byteContent=str.getBytes(CHARSET_NAME);cipher.init(Cipher.ENCRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(byteContent);returnresult;}catch(Exceptione){e.printStackTrace();}returnnull;}publicstaticStringdecode(StringhexStr,Stringpassword){byte[]arr=string2ByteArr(hexStr);returndecode(arr,password);}privatestaticStringdecode(byte[]arr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);cipher.init(Cipher.DECRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(arr);returnnewString(result,CHARSET_NAME);}catch(Exceptione){e.printStackTrace();}returnnull;}privatestaticStringbyteArrToString(byte[]arr){StringBuffersb=newStringBuffer();for(inti=0;i