社区
C#
帖子详情
谁能给我一个C#版的椭圆曲线(ECC)算法呀
jinhuapopo
2010-04-25 08:39:08
最好能够实现文件加解密,自由选择密钥长度
...全文
896
6
打赏
收藏
谁能给我一个C#版的椭圆曲线(ECC)算法呀
最好能够实现文件加解密,自由选择密钥长度
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Conmajia
2012-12-14
打赏
举报
回复
目测楼主目的是要代码,而非解决问题。。。
_沐阳_
2012-12-14
打赏
举报
回复
上面的方法只适用于vista及以上平台,xp不支持啊,楼主解决了么?
jinhuapopo
2010-04-30
打赏
举报
回复
自己顶一下
jinhuapopo
2010-04-27
打赏
举报
回复
感谢楼上两位,不过我想要的是自己写的,而不是使用C#自带的
wuyq11
2010-04-25
打赏
举报
回复
VS2008 椭圆曲线签名(ECDSA)
xray2005
2010-04-25
打赏
举报
回复
VS2008 椭圆曲线签名(ECDSA)
椭圆曲线签名(ECDSA)相对传统签名算法具有速度快、强度高、签名短等优点,其用途也越来越广泛了,Microsoft 产品的25位的CDKey中就使用了椭圆曲线签名算法。如今使用 VS2008 也能方便的进行椭圆曲线签名(ECDSA)了。遗憾的是 VS2008 提供的椭圆曲线签名目前只能在 Windwos Vista 上使用。
椭圆曲线签名(ECDSA)的工作原理与大多数签名算法类似,都是使用私钥进行签名,使用公钥进行验证。其模式与其他托管加密类相同,只是椭圆曲线签名(ECDSA)密钥存储在 CNG 中。使用 CNG 您可以安全地存储密钥对、公钥并使用简单的字符串名称对其进行引用;使用 CngKey 类对密钥进行打开、创建、删除和导出等操作。
public class ECDSALibrary
{
public static void Test()
{
// 密钥名称
string keyName = "Anjou's ECDSA Key";
// 公钥,私钥
byte[] publicKeyBytes, privateKeyBytes;
CngKey cngKey;
// 打开密钥
if (CngKey.Exists(keyName))
{
cngKey = CngKey.Open(keyName);
//cngKey.Delete();
}
// 生成密钥
else
{
CngKeyCreationParameters creationParameters = new CngKeyCreationParameters();
// 允许以明文的形式导出私钥
creationParameters.ExportPolicy = CngExportPolicies.AllowPlaintextExport;
// 使用 ECDsaP256,ECDsaP384,ECDsaP521 签名长度分别是 64 Bytes, 96 Bytes, 132 Bytes。
cngKey = CngKey.Create(CngAlgorithm.ECDsaP256, keyName, creationParameters);
}
// 导出公钥
publicKeyBytes = cngKey.Export(CngKeyBlobFormat.EccPublicBlob);
// 导出私钥
privateKeyBytes = cngKey.Export(CngKeyBlobFormat.EccPrivateBlob);
// 签名数据
byte[] data = Encoding.Unicode.GetBytes("这里是要签名的字符串。");
// 签名
byte[] signature = SignData(data, keyName);
// 验证签名
bool verified = VerifyData(data,signature,publicKeyBytes);
}
/// <summary>
/// 使用私钥签名
/// </summary>
public static byte[] SignData(byte[] data, string keyName)
{
// 打开密钥
CngKey cngKey = CngKey.Open(keyName);
// 签名
ECDsaCng ecdsa = new ECDsaCng(cngKey);
byte[] signature = ecdsa.SignData(data);
ecdsa.Clear();
cngKey.Dispose();
return signature;
}
/// <summary>
/// 使用公钥验证签名
/// </summary>
public static bool VerifyData(byte[] data, byte[] signature, byte[] publicKey)
{
bool verified = false;
// 导入公钥
CngKey cngKey = CngKey.Import(publicKey, CngKeyBlobFormat.EccPublicBlob);
// 验证签名
ECDsaCng ecdsa = new ECDsaCng(cngKey);
verified = ecdsa.VerifyData(data, signature);
ecdsa.Clear();
cngKey.Dispose();
return verified;
}
}
ECC
.zip_C++ 椭圆_
ECC
算法
_椭圆 加密_
椭圆曲线
ecc
_
椭圆曲线
算法
设定
椭圆曲线
方程参数,实现
椭圆曲线
加密
算法
椭圆曲线
ECC
加密
算法
Delphi示例
椭圆曲线
ECC
加密
算法
Delphi示例
椭圆曲线
ECC
加密
算法
Delphi示例
c++
椭圆曲线
算法
ECC
基本参数的生成
c++
椭圆曲线
算法
ECC
基本参数的生成
ECC
椭圆曲线
加密
算法
+ 学习文档 + 源码
1985 年,Miller 和 Koblitz 各自独立的提出了
椭圆曲线
公钥密码[3],它是基于有限域上
椭圆曲线
构成加密体制,其安全性基于有限域上
椭圆曲线
离散对数问题(Elliptic Curve Discrete Logarithm Problem, ECDLP)的难解性。
椭圆曲线
作为公钥密码
算法
的基础,它利用有限域上
椭圆曲线
的有限点群代替基 于离散对数问题密码
算法
中的有限循环群所得到的一类密码
算法
。与RSA密码系统相比,
椭圆曲线
密码
算法
有着巨大的安全性和技术优势。利用
椭圆曲线
建立密码
算法
具有两大潜在的优点:一是有取之不尽的
椭圆曲线
可用于构造椭圆 曲线有限点群;二是不存在计算
椭圆曲线
有限点群
椭圆曲线
密码(
ECC
)
算法
实现源码(C++)
采用C++实现了
椭圆曲线
算法
,至少本人是测试运用成功过的,期望可以对大家有所帮助
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章