signature - Java EC-Schnorr 实现
问题描述
我正在尝试编写 EC-Schnorr 实现,如以下 BIP 中所述:https ://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki
我有以下代码用于使用 Java 和 BouncyCastle 生成签名:
public SchnorrSig sign(byte[] hash) {
MessageDigest md = new SHA256.Digest();
/* Hash private key & message hash, convert to int mod order */
BigInteger k = bytesToBigInteger(md.digest(merge(privkey, hash))).mod(order);
/* Use k value as deterministic nonce for R point */
ECPoint R = G.multiply(k).normalize();
/* Checks if R is a quadratic residue (?) */
while (jacobi(R.getAffineYCoord().toBigInteger()) != 1) {
k = (order.subtract(k));
R = G.multiply(k).normalize();
}
md = new SHA256.Digest();
/* Hashes x-coord of R + public key point x coord + message hash, converts to int mod order */
BigInteger e = bytesToBigInteger(md.digest(merge(bigIntegerToBytes(R.getAffineXCoord().toBigInteger()), Hex.decode("03"), pubkey, hash))).mod(order);
/* Returns R point + (k e*priv) mod order */
return new SchnorrSig(R, k.add(e.multiply(bytesToBigInteger(privkey))).mod(order));
}
但是,它与提案中提供的任何测试向量都不匹配。据我所知,公钥和 R 点正在被正确计算,但是 e 值,然后变成 s,似乎没有被正确计算,我不知道为什么。
任何帮助,将不胜感激。
解决方案
推荐阅读
- grails - grails 集群应用程序
- python - DTreeViz 命令期间训练数据出现 ValueError
- reactjs - React Hook useState 为 props 值返回 undefined 但 props 值出现在文本框值上
- python - Python为多个输入引发自定义值错误
- asp.net - MSBuild Docker 映像
- pyspark - 是否可以从字符串构造 PySpark 语句?
- sql - SQL Oracle - 如何根据它们之间的共享条件排除多行
- api - xcart:为 google studio 仪表板导出报告数据
- android - 使用 APP_STL=c++_static 的 Android 原生崩溃很奇怪
- json - 在 Visual Basic 中验证 JSON 文件