首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ed25519的alg值?

Ed25519的alg值?
EN

Stack Overflow用户
提问于 2021-03-31 19:01:29
回答 1查看 2.6K关注 0票数 3

RFC7518有一个用于JWT的算法值列表。但是,EdDSA没有任何价值,比如Ed25519。此外,在Jose中验证时,Ed25519不被接受为有效值。Ed25519的正确alg值是多少?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 19:22:08

ED25519是一种EdDSA (Edwards曲线DSA)签名方案。另见RFC8037RFC8032

根据何塞文件,需要将alg设置为EdDSA

JWS算法:Edwards曲线DSA alg: EdDSA

EdDSA也被列在IANA注册表的JSON签名和加密算法部分中(谢谢@Florent的提示)

在这里,我展示了一个示例,如何在Node.js中用荷西荷西生成一个荷西键和一个签名令牌,然后用荷西中的公钥验证令牌:

生成密钥对和令牌:

代码语言:javascript
复制
const { SignJWT } = require('jose/jwt/sign')
const { generateKeyPairSync } = require('crypto')

const { publicKey, privateKey } = generateKeyPairSync('ed25519');
console.log(publicKey.export({format:'pem',type:'spki'}))
console.log(privateKey.export({format:'pem',type:'pkcs8'}))

const jwt = await new SignJWT({ 'id': 1 })
    .setProtectedHeader({ alg: 'EdDSA' })
    .setExpirationTime('2h')
    .sign(privateKey)

console.log(jwt)

-开始公开密钥 MCowBQYDK2VwAyEA7fySb/9h7hVH8j1paD5IoLfXj4prjfNLwOPUYKvsTOc= MC4CAQAwBQYDK2VwBCIEIIJtJBnTuKbIy5YjoNiH95ky3DcA3kRB0I2i7DkVM6Cf - eyJhbGciOiJFZERTQSJ9.eyJpZCI6MX0.RAxBAQPFOxrCfgqb56eaAz9u2lByj-WEO- JWgJH3Cyx1o1Hwjn1pA2M4NgJeob9vb2Oaw4FOeYFr6_33XMTnAQ

解码的令牌标头:

代码语言:javascript
复制
{
  "alg": "EdDSA"
}

PyJWT验证Python中的令牌

代码语言:javascript
复制
import jwt

public_key = """-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA7fySb/9h7hVH8j1paD5IoLfXj4prjfNLwOPUYKvsTOc=
-----END PUBLIC KEY-----"""

token = 'eyJhbGciOiJFZERTQSJ9.eyJpZCI6MX0.RAxBAQPFOxrCfgqb56eaAz9u2lByj-WEO-JWgJH3Cyx1o1Hwjn1pA2M4NgJeob9vb2Oaw4FOeYFr6_33XMTnAQ'

decoded = jwt.decode(token, public_key, algorithms='EdDSA', verify=True)
print(decoded)   

注意: jwt.io目前不支持EdDSA/ on 25519算法,因此无法在该站点上验证令牌。我也不知道其他JWT网站可以验证EdDSA签名的令牌。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66893790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档