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

Android中Kotlin AES/GCM加密代码的Java等价写法咨询

Kotlin加密代码转Java:or的等价写法

你用位或运算符|的写法是完全正确的,对应的完整Java代码如下:

KeyGenParameterSpec kgps = new KeyGenParameterSpec.Builder("my_aes_key", 
        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
        .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
        // 允许自行提供IV,必须设置这个参数
        .setRandomizedEncryptionRequired(false)
        .build();

为什么||会报错?

  • Kotlin中的or是位或运算符,用来对两个整数类型的位掩码常量(PURPOSE_ENCRYPT和PURPOSE_DECRYPT都是int类型)做按位或运算,生成一个组合后的掩码,以此指定密钥的多种用途。
  • Java里的||是逻辑或运算符,返回的是布尔值(true/false),但KeyGenParameterSpec.Builder的第二个参数要求传入int类型的密钥用途掩码,类型不匹配自然编译失败。
  • Java的|就是对应Kotlinor的位或运算符,能正确组合两个位掩码,完全符合API的参数要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:45:38