问题标签 [elliptic-curve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 用于椭圆曲线加密的 NFC 兼容标签
我有一个 Android 项目,要求我使用 NFC 标签使用椭圆曲线算法对数据进行加密/签名。
我需要标签能够使用我在外部生成的密钥对来执行加密本身。重要的是,私钥存储在标签上,而不是传输到 Android 来执行签名。
我还需要写保护所有标签,这样只有我签名的数据才能写入它们。
我希望标签的外形尺寸尽可能小。
从我目前的研究来看,看起来我必须使用 Java Cards,但我不确定这一点。
任何人都可以确认我可以使用的适当设备吗?
java - 椭圆曲线 ElGamal Java 实现
是否有具有密钥生成、加密和解密功能的 ElGamal 椭圆曲线密码系统的简单实现(使用 Java BigInteger);一个可以用来在讲座中向大学生解释的东西?
例如,Paillier 加密函数可以在不失一般性的情况下编码为:
其中包含优化 g=(1+n),使得密文 c = (1 + mn) r^n mod n^2。
请不要建议 Java 7 原生实现或 BouncyCastle 实现,因为我不需要真实世界的符合 JCA 的复杂实现。
谢谢。
cryptography - 如何从 OpenSSL 中的 ECDSA 私钥获取公钥?
我提供这个示例应用程序来显示我的问题
我想要做的是从私钥显示公钥(应该是椭圆私钥)。在遇到类似问题之前我不知道该怎么做
如何提供 OpenSSL 随机数据以用于 ECDSA 签名?
这是我指出自己如何获取公钥并使用 EC_POINT_bn2point 而不是根据 OpenSSL 源在内部执行 BN_hex2bn 的 hex2point 的地方。
那么,为什么 EC_POINT_bn2point 返回 NULL?我正在认真考虑重新编译 OpenSSL 并放置一些调试程序来找出它失败的原因。
c - 在c中找到分段错误的解决方案
我正在为 contiki os 移植椭圆曲线密码学(基于纯 c)。我收到分段错误的错误。我使用 xxgdb 进行调试,但仍然找不到原因。而且我对c中的调试没有明确的想法。请帮助如何始终摆脱 c 中的这些分段错误(如何找出发生此分段错误的原因)。
这是我的源代码。
java - 将 ECIES ECP CryptoPP 转换为 JAVA
我有一个 202 字节的密钥,用于解密二进制文件。
我尝试为此使用 jsafejce:
和
但是第一个我得到一个块错误,必须除以 16,第二个我得到一个 mac 检查错误。
有没有人有什么建议?
elliptic-curve - 有没有等效于 RSA 的非对称加密的椭圆曲线算法?
我一直在搜索,但找不到任何关于此的信息……只有具有对称密码学的 EC Diffie-Hellman,这正是我不想要的:(
想象一下:
- 生成随机私钥,
k
- 然后用 ECC 计算一个“公钥”,
d=kG
我正在寻找的算法是这样的:任何用公钥加密的消息将“仅”由私钥的所有者解密。
这存在吗?有没有开发过这样的东西?
ellipse - 以匀速沿椭圆路径移动多个精灵
我正在尝试在椭圆路径中移动多个精灵(图像),以使距离(弧距)保持一致。
我试过了
逐个角度移动每个精灵角度,但问题是围绕主轴移动单位角度时移动的距离与围绕短轴移动单位角度时移动的距离不同 - 因此移动的距离不同。
仅通过均匀更改 x 轴来移动精灵,但它再次围绕主轴移动更多。
那么有什么想法如何在不相互追赶/重叠的情况下均匀地移动精灵?
其他信息:
- 它将在 onMouseMove/onTouchMoved 中调用,所以我想它不应该占用太多 CPU。
- 虽然它是一个通用的算法问题,但如果它有帮助,我正在使用 cocos2d-x
encryption - 试图调和椭圆曲线误差
我正在尝试执行以下操作:
我有一个使用 ECC 生成标准 Rijndael 密钥的软件(不是AES... 有区别:AES 仅支持 128、192 和 256 位的密钥大小,而 Rijndael 最初支持 160 和 224 位。当我在看这个软件的时候,这让我一开始觉得很痛苦。)我已经能够确定它做了以下事情:
它有几种模式,但在最弱的模式下,它使用 ECC secp160r1 生成 160 位密钥(因此是 Rijndael 和NOT AES)。我已经能够在我自己的软件中获取“公共”值并使用私钥,并且使用 openssl 调用,能够生成相同的密钥并解密我需要解密的数据。
在最好(最强/最难,你有什么)模式下,它几乎做同样的事情,但是,它使用 ECC sect571k1 生成一个密钥,并且只占用它为 Rijndael 256 位密钥生成的 72 个字节的前 32 个字节(在这种情况下,您可以说 AES256)。
但是,在另一种模式下,它似乎在做同样的事情,但是当我尝试像以前一样做同样的事情时,我没有得到相同的共享密钥。
如果您使用 Alice 和 Bob 的标准定义:
我有:
我检查了我的 Qb 和 daQb 是否在 sect283k1 曲线上。如果我使用 sect283r1,事情就会失败,并且我的点不会使用 Openssl EC_POINT、EC_KEY、EC_GROUP 函数在该曲线上注册(我现在会发布代码,但我面前没有它。只要我做,我会尝试在这里发布)。正如我所说,我已经能够重现其他两种模式,而且它似乎工作正常。但是,在这种模式下,当我计算密钥时,我得到 Sw --> 由我的程序计算的“错误”共享密钥。
所以,我的问题是:我是否有足够的信息来确定我是否使用了错误的数据库?我不认为我是,因为在其他两种情况下,我可以获得数据库并且它工作正常。不幸的是,我没有该程序的源代码。我正在尝试创建一个可以处理原始工具生成的数据的工具。
我曾想过尝试反转 Qb 并将数据乘以 daQb,但真正要做的就是让我得到 da,虽然这很有趣,但并没有让我找到一种可以在我必须确定 db 的共享密钥上使用它的方法,检查我的工作。
我想到的另一件事是,可能使用了与 sect283k1 类似的曲线,但不是 sect283k1(即可能是一些不同的 G?我不确定是否可以在该曲线上使用另一个生成器,但我不认为每条曲线只有一个生成器,但也许这是错误的,也许另一个生成器会产生不同的结果......即正确的结果)。
无论如何,我已经尝试了几件事,只是为了使用其他程序正在使用的相同数据生成相同的错误密钥数据。也许有一些远超 EC 数学知识的人(几乎任何人都会比我自己的更好,但我希望有人可以帮助我了解我所缺少的东西)可以告诉我一种可以调和我所得到的东西的方法其他工具得到什么。
不幸的是,我可以在设置 Rijndael 键之前停下来看看它将被设置为什么。我可以找到密钥的那部分并查看来自 ECDH_compute_key 操作的原始数据(这似乎本质上是 daQb 和 db 之间的 EC_POINT_mul (如果我对 Diffie-Hellman 密钥交换有足够的了解......我已经验证了这一点)无论如何使用一些openssl调用),并且我知道其他一些事情,但是我找不到可以帮助我了解操作的Bignum / EC代码。所以我正在寻找另一种给猫剥皮的方法.
感谢任何可以提供帮助的人。
c++ - openssl 椭圆曲线
我有一条椭圆曲线 EC,我需要找到 EC 的这样一个点 G,其坐标是曲线上所有点中最小的非负整数。我需要它来实现ECOH散列算法。我试图使用 openssl 来实现这个目标,但到目前为止我还没有弄清楚如何找到这样一个点。我试图这样做:
但它只检查坐标为 (x, y) 的点是否在曲线上。我怎样才能找到它?