架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 214|回复: 3

【转】Curve25519 加密算法

[复制链接]
发表于 2025-2-12 17:05:02 | 显示全部楼层 |阅读模式
urve25519 是目前最高水平的 Diffie-Hellman函数,适用于广泛的场景,由Daniel J. Bernstein教授设计。在密码学中,Curve25519是一个椭圆曲线提供128位安全性,设计用于椭圆曲线Diffie-Hellman(ECDH)密钥协商方案。它是最快的ECC曲线之一,并未被任何已知专利所涵盖。

给定一个用户的32字节密钥,curve25519计算该用户的32字节公钥。给定该用户的32字节密钥和另一个用户的32字节公钥,curve25519计算一个32字节的共享密钥提供给这两个用户使用。然后可以使用这个秘密对两个用户进行身份验证和信息加密。

2. 下载及编译Curve25519

curve25519库以非常高的速度计算curve25519函数。该库应用领域广泛。您可以并且应该将它应用在自己的程序中,而不是链接到共享库;编译后的代码大约为16KB,这取决于CPU。

下载及编译

下载

编译


3.使用Curve25519

对于将使用curve25519的任何C程序,修改该程序以包含curve25519.h;同时修改makefile以将该程序与curve25519.a链接,并声明该程序依赖于curve25519.a和curve25519.h。

计算密钥

在程序内部,要生成一个32字节的curve25519密钥,首先从一个加密安全源 :mysecret[0], mysecret[1], …, mysecret[31], 生成一个秘密的32个随机字节。然后照如下方式做:
mysecret[0] &= 248;
mysecret[31] &= 127;
mysecret[31] |= 64;
生成一个32字节Curve25519 秘钥mysecret[0], mysecret[1], …, mysecret[31]。

未来该库版本将支持一个curve25519_压缩函数,它将128个字节散列压缩为32个字节,增加了一些对不足的随机数生成器的保护;一个curve25519_钳函数,它将32个字节转换为密钥;以及一个最容易使用的组合的curve25519_秘钥生成函数,它直接将128个字节转换为密钥。

计算公钥

为了生成和32Byte秘钥一致的32Byte的公钥 mypublic[0], mypublic[1], …, mypublic[31],调用函数
curve25519(mypublic,mysecret,basepoint);
其中常量basepoint为:

const unsigned char basepoint[32] = {9};
以后的库版本将支持更简洁的curve25519_公共函数。

生成共享秘钥

给定另一用户的Curve25519公共秘钥hispublic[0], hispublic[1], …, hispublic[31], 调用

curve25519(shared,mysecret,hispublic);
生成32-byte共享秘钥shared[0], shared[1], …, shared[31]. 另一个人可以根据自己的私钥以及你的公钥生成相同的共享秘钥。
然后你们两个都可以对这个共享秘钥进行散列运算,并将结果作为一个密钥使用,例如用于 Poly1305-AES。
以后的库版本将支持一个curve25519_扩展函数直接将一个32Byte秘钥运用散列运算生成128 byte用于作为一个秘钥,并且最容易使用的,一个组合curve25519_共享函数。

4. 参考

[Ed25519和Curve25519解释] https://blog.csdn.net/stella_alash/article/details/73658473
[Curve25519加解密 和 Ed25519加验签的使用] https://blog.csdn.net/farley119/article/details/87875201
[Ed25519算法] https://blog.csdn.net/u013137970/article/details/84573265
[android ed25519实现] https://mvnrepository.com/artifact/click.kobaken/ed25519/1.0.0
[[ed25519 C实现] https://github.com/orlp/ed25519
[ed25519 Java实现] https://github.com/str4d/ed25519-java

原文:https://blog.csdn.net/u011897062/article/details/89633193




上一篇:Angular 18 系列(三十一)VS Code 开发辅助插件
下一篇:NVIDIA Project DIGITS 个人 AI 超级计算机
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-2-12 17:07:50 | 显示全部楼层
.NET/C# 实现代码:


测试

屏幕截图 2025-02-12 170649.png


Curve25519.cs (31 KB, 下载次数: 1, 售价: 10 粒MB)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2025-2-13 16:26:18 | 显示全部楼层
看样子不错·支持一下。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2025-2-14 09:51:22 | 显示全部楼层
看样子不错·支持一下
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-3-21 21:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表