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

有没有人可以把这段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日

    悬赏问题

    • ¥15 使用matlab进行手眼标定的仿真验证,得到齐次矩阵与opencv相差较大
    • ¥15 Python词频统计,运行出的Excel没有内容
    • ¥15 求推荐一个好用的录屏软件
    • ¥15 kali显示no x11 display variable was set;
    • ¥15 如何实现这个Python开发问题
    • ¥15 Erasure Code纠删码表
    • ¥15 用vite创建的vue3项目,404重定向不起作用??
    • ¥15 关于#c语言#的问题:一个球从80米高度自由落下,每次落地后反弹的高度为原高度的一半计算6次小球反弹的高度.(反弹结果取整,使用走走for循环结构)
    • ¥15 SurfaceControl的screenshot问题
    • ¥15 基于51单片机的oled菜单代码,要C语言,模块化编程!