EdDSA是一种基于 Twisted Edwards曲线 的 数字签名算法。
Twisted Edwards曲线是椭圆曲线的一种, 对应公式:
EdDSA的具体实现有Ed25519 (基于Curve25519的Edwards形式), Ed448...
EdDSA不像ECDSA需要随机数nonce, 签名流程中使用了 sha512
Ed25519签名流程中公钥私钥生成是基于Curve25519 (Ed25519 并不直接使用 Curve25519 的 Montgomery 形式,而是使用它的 Edwards 变体)
Ed25519签名和验签流程:
假设 A和B两个用户, A 签名信息 B验证信息
通信双方A和B, 已知信息有:
1. A 生成自己的公钥私钥, 随机生成 KA,然后
2. 计算随机数“r”,
3. 计算“R”坐标,
4. 计算“k”
5. 计算 "S",
6. 生成最后的signature = R + littleEndian(S)
R = sign的前32个字节
s = littleEndian(sign的后32个字节), 此时S是小端字节序转回 正常序
2. 计算SB
3. 计算k
4. 计算RKA
5. 验证签名 RKA === SB 相等则验签成功
私钥: |
公钥: |
message(Hex): |
message输入类型: |
Signature |
公钥: |
message: 0x |
Signature: 0x |