Android studio 验证Kotlin中的签名JWT.IO
我需要用jwt.io验证令牌 为此,我有一个令牌(许可证) “EYJHBGCIOIJZI1NIISINR5CCI6IKPXVCJ9.EYJ0ZW5HBNRJZCI6MJCWMZYWLCJWYWWNWRYWDLC……” 和json(证书) “钥匙”:[ { “孩子”:“1”, “e”:“AQAB”, “kty”:“RSA”, “alg”:“RS256”, “n”:“rXYc2Ehtb42R83kLIw56biI/ABOp03lzbYHdXI0caeli……”, “使用”:“sig” } 在jwt.io站点的调试器中,我收到了“签名已验证”的信息 我正在网上寻找一些脚本,可以让我做同样的事情 同样在jwt.io站点上,我发现我可以使用这里报告的代码,但是,如果我理解正确,它不使用RS256算法,而是使用ES256,因此不应该工作 我也在尝试同样的方法,但老实说,我不明白解码器在示例中要求什么 val valid=JWT.verify(令牌字符串、jwk、解码器) 我相信前两个是我掌握的数据 您能给我一些建议或给我一些其他代码来验证签名吗?问题就在这里 val nInt=Biginteger(1,Base64.getUrlDecoder().decode(n)) 您必须只获取cert的元素n,而不是所有cert(json)Android studio 验证Kotlin中的签名JWT.IO,android-studio,kotlin,jwt,Android Studio,Kotlin,Jwt,我需要用jwt.io验证令牌 为此,我有一个令牌(许可证) “EYJHBGCIOIJZI1NIISINR5CCI6IKPXVCJ9.EYJ0ZW5HBNRJZCI6MJCWMZYWLCJWYWWNWRYWDLC……” 和json(证书) “钥匙”:[ { “孩子”:“1”, “e”:“AQAB”, “kty”:“RSA”, “alg”:“RS256”, “n”:“rXYc2Ehtb42R83kLIw56biI/ABOp03lzbYHdXI0caeli……”, “使用”:“sig” } 在jwt.
您也可以使用kotlin(在您的案例中)的其他JVM语言库Hi@user28434 I changed library,但我总是收到令牌无效的消息,您能给我一些建议吗?这是我的代码
val e = obj_cert.asJsonObject["e"].asString
val n = obj_cert.asJsonObject["n"].asString.replace('+', '-').replace('/', '_').replace("=", "")
val eInt = BigInteger(1, Base64.getUrlDecoder().decode(e))
val nInt = BigInteger(1, Base64.getUrlDecoder().decode(n))
val spec = RSAPublicKeySpec(nInt, eInt)
val publicKey = KeyFactory.getInstance("RSA").generatePublic(spec) as RSAPublicKey
val algorithm: Algorithm = Algorithm.RSA256(publicKey, null)
val verifier: JWTVerifier = com.auth0.jwt.JWT.require(algorithm).build()
verifier.verify(license)