猿某人74110 2022-11-21 22:49 采纳率: 100%
浏览 10
已结题

有没有人可以把这段Java的AES加密改为php版本的?


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Arrays;
import java.util.Base64;
public class Main {
    public static void main(String[] args) {
        String amountStr = "123456";
        String AES_IV = "05U1GlzbvBmS9UVz+out4Q==";
        String AES_KEY = "D5M2+rt7out0Oc23K+YqYr==";
        try {
            
            String str = EncryptUtil.AESEncryptEncode(amountStr,AES_IV,AES_KEY);
            System.out.println(str); // 这里输出:oks9F0DqTtVWvAZeFOaaVw==
        } catch(Exception e) {
        }
        
    }
    
}

class EncryptUtil {

        private static final String ENCODE = "UTF-8";

        private static final String AES = "AES";

        private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";


        /**
         * AES加密
         * @param content 加密内容
         * @param AES_IV 加密偏移量
         * @param AES_KEY 加密密钥
         * @return 密文
         * @throws Exception 加密过程中出现的异常
         */
        public static String AESEncryptEncode(String content,String AES_IV,String AES_KEY) throws Exception{
            Base64.Decoder decoder = Base64.getDecoder();
            byte[] keyByte = decoder.decode(AES_KEY);
            int base = 16;
            if (keyByte.length % base != 0) {
                int groups = keyByte.length / base + 1;
                byte[] temp = new byte[groups * base];
                Arrays.fill(temp, (byte) 0);
                System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
                keyByte = temp;
            }
            SecretKeySpec secretKeySpec = new SecretKeySpec(keyByte,AES);

            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);

            cipher.init(Cipher.ENCRYPT_MODE,secretKeySpec,new IvParameterSpec(decoder.decode(AES_IV)));

            byte[] result = cipher.doFinal(content.getBytes(ENCODE));

            return Base64.getEncoder().encodeToString(result);
        }

    }
  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月12日
  • 已采纳回答 12月12日
  • 修改了问题 11月21日
  • 创建了问题 11月21日