program.cs
来自「C#高级编程第6版随书源代码 值得下载」· CS 代码 · 共 54 行
CS
54 行
using System;
using System.Security.Cryptography;
using System.Text;
namespace Wrox.ProCSharp.Security
{
class Program
{
internal static CngKey aliceKeySignature;
internal static byte[] alicePubKeyBlob;
static void Main()
{
CreateKeys();
byte[] aliceData = Encoding.UTF8.GetBytes("Alice");
byte[] aliceSignature = CreateSignature(aliceData, aliceKeySignature);
Console.WriteLine("Alice created signature: {0}", Convert.ToBase64String(aliceSignature));
if (VerifySignature(aliceData, aliceSignature, alicePubKeyBlob))
{
Console.WriteLine("Alice signature verified successfully");
}
}
static void CreateKeys()
{
aliceKeySignature = CngKey.Create(CngAlgorithm.ECDsaP256);
alicePubKeyBlob = aliceKeySignature.Export(CngKeyBlobFormat.GenericPublicBlob);
}
static bool VerifySignature(byte[] data, byte[] signature, byte[] pubKey)
{
bool retValue = false;
using (CngKey key = CngKey.Import(pubKey, CngKeyBlobFormat.GenericPublicBlob))
{
ECDsaCng signingAlg = new ECDsaCng(key);
retValue = signingAlg.VerifyData(data, signature);
signingAlg.Clear();
}
return retValue;
}
static byte[] CreateSignature(byte[] data, CngKey key)
{
ECDsaCng signingAlg = new ECDsaCng(key);
byte[] signature = signingAlg.SignData(data);
signingAlg.Clear();
return signature;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?