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

在Google Play Integrity中生成Nonce的正确方式是什么?

Play Integrity服务的Nonce生产环境生成方案

Google推出的Play Integrity服务用于设备验证,nonce是该服务的必填输入字符串,但目前公开资料中缺少可直接用于生产环境的生成示例。

安全生成Nonce的核心要求

  • 必须是不可预测、全局唯一的随机值,防范重放攻击
  • 长度建议在16-64字节范围内,可采用Base64编码的随机字节串形式
  • 可选加入业务上下文(如用户ID、请求时间戳),但需确保敏感信息不通过明文nonce泄露

Android端生产环境示例(Kotlin)

import java.security.SecureRandom
import android.util.Base64

fun generateValidNonce(userId: String): String {
    // 使用密码学安全的随机生成器
    val secureRandom = SecureRandom()
    val randomBytes = ByteArray(32)
    secureRandom.nextBytes(randomBytes)
    
    // 混入用户标识与时间戳,增强唯一性(可根据业务调整)
    val timestamp = System.currentTimeMillis()
    val rawNonce = "$userId|$timestamp|${Base64.encodeToString(randomBytes, Base64.NO_WRAP)}"
    
    // 返回Base64编码后的最终nonce,便于传输
    return Base64.encodeToString(rawNonce.toByteArray(), Base64.NO_WRAP)
}

后端配合要点

  • 生成nonce后需与用户请求关联存储,验证Play Integrity响应时要匹配该nonce
  • 为nonce设置过期时间(如5分钟),避免长期有效被恶意复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:05:17