You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8环境下javax.crypto.Cipher的AES密钥长度与加密类型咨询

val mycipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
mycipher.init(Cipher.ENCRYPT_MODE, givemeKey(), givemeIV())

private def givemeKey(keyPass: Option[String] = None) = {
    new SecretKeySpec(new BASE64Decoder().decodeBuffer("XxXxXxYyYyYXxZzZz-5z3y**\n"), "AES")
}

private def givemeIV() = {
    val myuuid = UUID.randomUUID().toString.split("-").mkString("").getBytes()
    val mybyteIV = new Array[Byte](16)
    System.arraycopy(myuuid, 0, mybyteIV, 0, 16)
    val returnIV = new IvParameterSpec(mybyteIV)
    returnIV
}

问题1:密钥规格判断

AES密钥长度由SecretKeySpec接收的字节数组长度决定,对应规则:

  • 16字节 = AES-128
  • 24字节 = AES-192
  • 32字节 = AES-256

你示例中给出的BASE64密钥串为测试占位值,按贴出的内容解码后得到的字节长度不符合AES密钥长度要求,运行会抛出参数异常。额外提醒:Java8默认环境未安装JCE无限强度权限包时,最高仅支持AES-128,若实际密钥长度超过16字节会直接报错。

问题2:加密类型确认

AES属于对称加密算法,加解密使用同一个密钥即可完成操作。非对称加密指RSA、ECC这类需要公私钥配对使用的加密体系,和AES的实现逻辑完全不同。


内容的提问来源于stack exchange,提问作者Pradip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:42:03