钱南园行书:VS2008 椭圆曲线签名(ECDSA)
来源:百度文库 编辑:九乡新闻网 时间:2024/05/11 20:00:39
VS2008 椭圆曲线签名(ECDSA)
椭圆曲线签名(ECDSA)相对传统签名算法具有速度快、强度高、签名短等优点,其用途也越来越广泛了,Microsoft 产品的25位的CDKey中就使用了椭圆曲线签名算法。如今使用 VS2008 也能方便的进行椭圆曲线签名(ECDSA)了。遗憾的是 VS2008 提供的椭圆曲线签名目前只能在 Windwos Vista 上使用。
椭圆曲线签名(ECDSA)的工作原理与大多数签名算法类似,都是使用私钥进行签名,使用公钥进行验证。其模式与其他托管加密类相同,只是椭圆曲线签名(ECDSA)密钥存储在 CNG 中。使用 CNG 您可以安全地存储密钥对、公钥并使用简单的字符串名称对其进行引用;使用 CngKey 类对密钥进行打开、创建、删除和导出等操作。
{
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);
}
///
/// 使用私钥签名
///
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;
}
///
/// 使用公钥验证签名
///
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;
}
}
VS2008 椭圆曲线签名(ECDSA)
椭圆曲线数字签名算法(ECDSA)(
XP序列号与椭圆曲线签名算法
vs2008快捷键
椭圆方程式知识点总结
vs2008常用配置
VS2008 (vc2008)对齐代码
椭圆及其标准方程引入
签名,
vs2005与vs2008的转化
《椭圆及其标准方程》教学设计
椭圆引入课教学设计片断
车削“斜椭圆”的宏程序
VS2008调试技巧收集备用11
VS2008调试技巧收集备用2
vs2008自带示例源代码路径
VS2008+SQL2005 ASP.NET2.0数据库连接总结
vs2008安装错误失败的解决方法
VS2008工程转VS2005工程?侧记
VS2008调试技巧收集备用1
vs2008编译opencv2.3的问题
图解VS2008项目的安装与部署图解-WinFrom程序打包(Vs2008 打包,VS20...
一周太空图片精选:巨型椭圆星系中央发现黑洞
illustrator中的图形工具(矩形,椭圆,...)怎么做羽化效果