jps*_*jps 15
ED25519 是一种 EdDSA(爱德华兹曲线 DSA)签名方案。另请参阅RFC8037和RFC8032。
根据jose 文档 alg需要设置为EdDSA:
JWS 算法:爱德华兹曲线 DSA
alg:EdDSA
EdDSA也在IANA 注册管理机构的JSON Web 签名和加密算法部分中列出(感谢 @Florent Morselli 的提示)
这里我展示了如何使用Node.js Crypto和jose生成 ed25519 密钥对和签名令牌,然后使用 Python 中的公钥验证令牌:
生成密钥对和令牌:
const { SignJWT } = require('jose/jwt/sign')
const { generateKeyPairSync } = require('node: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)
Run Code Online (Sandbox Code Playgroud)
-----开始公钥-----
MCowBQYDK2VwAyEA7fySb/9h7hVH8j1paD5IoLfXj4prjfNLwOPUYKvsTOc=
-----结束公钥-----
-----开始私钥-----
MC4CAQAwBQYDK2VwBCIEIIJtJBnTuKbIy5YjoNiH95ky3DcA3kRB0I2i7DkVM6Cf
-----结束私钥-----
eyJhbGciOiJFZERTQSJ9.eyJpZCI6MX0.RAxBAQPFOxrCfgqb56eaAz9u2lByj-WEO- JWgJH3Cyx1o1Hwjn1pA2M4NgJeob9vb2Oaw4FOeYFr6_33XMTnAQ
解码后的令牌头:
{
"alg": "EdDSA"
}
Run Code Online (Sandbox Code Playgroud)
使用PyJWT验证 Python 中的令牌:
{
"alg": "EdDSA"
}
Run Code Online (Sandbox Code Playgroud)
注意: jwt.io目前不支持 EdDSA/ED25519 算法,因此您无法验证该站点上的令牌。我也不知道任何其他 JWT 网站可以验证 EdDSA 签名的令牌。
| 归档时间: |
|
| 查看次数: |
5329 次 |
| 最近记录: |