本文整理汇总了C#中System.Security.Cryptography.DSACryptoServiceProvider.VerifyHash方法的典型用法代码示例。如果您正苦于以下问题:C# DSACryptoServiceProvider.VerifyHash方法的具体用法?C# DSACryptoServiceProvider.VerifyHash怎么用?C# DSACryptoServiceProvider.VerifyHash使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Security.Cryptography.DSACryptoServiceProvider
的用法示例。
在下文中一共展示了DSACryptoServiceProvider.VerifyHash方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Test
public static Boolean Test(Session session)
{
Boolean bRes = true;
//String xml1, xml2, xml3;
//String sign1, sign2, sign3;
byte[] hashval = new byte[20];
for (int i = 0; i < hashval.Length; i++) hashval[i] = (Byte)i;
DSACryptoServiceProvider dsa1 = new DSACryptoServiceProvider(session);
DSACryptoServiceProvider dsa2 = new DSACryptoServiceProvider(session);
//DSACryptoServiceProvider dsa3 = new DSACryptoServiceProvider(session);
DSAParameters dsaParams = dsa1.ExportParameters(true);
byte[] sig1 = dsa1.SignHash(hashval, MechanismType.SHA_1);
//sign1 = (Convert.ToBase64String(sig1));
//xml1 = dsa1.ToXmlString(true);
dsa2.ImportParameters(dsaParams);
//dsa2.FromXmlString(xml1);
//xml2 = (dsa2.ToXmlString(true));
//xml3 = (dsa3.ToXmlString(true));
byte[] sig2 = dsa2.SignHash(hashval, MechanismType.SHA_1);
//sign2 = (Convert.ToBase64String(sig2));
//dsa3.HashAlgorithm = MechanismType.SHA_1;
//byte[] sig3 = dsa3.SignHash(hashval);
//sign3 = (Convert.ToBase64String(sig3));
//if ((xml1 != xml2) || (xml2 != xml3))
//{
// Log.Comment("WRONG : ToXmlString results are different");
// Log.Comment("XML1:\n" + xml1);
// Log.Comment("XML2:\n" + xml2);
// Log.Comment("XML3:\n" + xml3);
// bRes = false;
//}
//Log.Comment(xml1);
/* if ( (sign1!=sign2) || (sign2!=sign3) ) {
Log.Comment("WRONG : signatures are different");
Log.Comment("First: " + sign1);
Log.Comment("Second: " + sign2);
Log.Comment("Third: " + sign3);
bRes = false;
} */
//Log.Comment("\n" + sign1);
if (!dsa1.VerifyHash(hashval, MechanismType.SHA_1, sig2))
{
Log.Comment("WRONG : Signature check (1) failed");
bRes = false;
}
if (!dsa2.VerifyHash(hashval, MechanismType.SHA_1, sig1))
{
Log.Comment("WRONG : Signature check (1) failed");
bRes = false;
}
//if (!dsa3.VerifyHash(hashval, sig1))
//{
// Log.Comment("WRONG : Signature check (1) failed");
// bRes = false;
//}
return bRes;
}
示例2: TestSignature
MFTestResults TestSignature(DSACryptoServiceProvider csp, HashAlgorithm hashAlg)
{
bool testResult = false;
try
{
string dataToSign = "This is a simple message to be encrypted";
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(dataToSign);
byte[] signature = csp.SignData(data);
testResult = csp.VerifyData(data, signature);
byte[] hash = hashAlg.ComputeHash(data);
signature = csp.SignHash(hash, hashAlg.HashType);
testResult &= csp.VerifyHash(hash, hashAlg.HashType, signature);
}
catch (Exception ex)
{
Log.Exception("Unexpected Exception", ex);
testResult = false;
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例3: CSPVerifyBadHash
/// <summary>
/// Verify signature of bad hash
/// </summary>
private static void CSPVerifyBadHash()
{
using (DSACryptoServiceProvider dsa = new DSACryptoServiceProvider())
{
dsa.VerifyHash(new byte[0], MechanismType.SHA_1, new byte[] { 0, 1, 2, 3, 4, 5 });
}
}
示例4: CSPVerifyNullHash
/// <summary>
/// Verify null hash
/// </summary>
private static void CSPVerifyNullHash()
{
using (DSACryptoServiceProvider dsa = new DSACryptoServiceProvider())
{
dsa.VerifyHash(null, MechanismType.SHA_1, new byte[] { 0, 1, 2 });
}
}
示例5: button7_Click
//Верифицируем - проверяем документ
private void button7_Click(object sender, EventArgs e)
{
// создаем объект выбранного заказа
// определяем, выбран ли хотя бы один заказ
if (dataGridView1.SelectedRows.Count == 0)
return;
else
{
//получение номера текущего выбранного заказа
nom = (int)dataGridView1.SelectedRows[0].Cells["НомерЗаказа"].Value;
// проверка, имеется ли цифровая подпись выбранного чека,
// т.е. имеется ли соответствующий файл
if (!File.Exists("Zakaz" + nom + ".dat"))
{
MessageBox.Show("Ещё не создана цифровая подпись!");
return;
}
else
{
// создаем объект выбранного заказа аналогично предыдущей функции
// (объект с класса Zakaz)
MessageBox.Show(nom.ToString());
//получение номера текущего выбранного заказа
date = (DateTime)dataGridView1.SelectedRows[0].Cells["ДатаЗаказа"].Value;
// поиск заказа по ключу
DataRow dr = ds.Tables["Заказы"].Rows.Find(new object[] { (object)nom, (object)date });
// создаем объект заказа для последующей сериализации
Zakaz c = new Zakaz((int)dr["IDЗаказчика"], (int)dr["IDИсполнителя"], (int)dr["НомерЗаказа"], (DateTime)dr["ДатаЗаказа"], (string)dr["Предмет/Тема"], (int)dr["Стоимость"]);
// проводим генерацию хэш-значения для объекта c
// бинарная сериализация объекта для формирования цифровой подписи
BinaryFormatter ser = new BinaryFormatter();
// создаем поток для сериализации объекта в оперативной памяти
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, c);
// получаем массив байт, определяющий объект чека
byte[] message = new byte[ms.Length];
ms.Read(message, 0, (int)ms.Length);
// создаем провайдер для хэширования
SHA1 sha1 = new SHA1CryptoServiceProvider();
// проводим хэширование
byte[] hashMessage = sha1.ComputeHash(message);
// работа с цифровой подписью - считываем подпись и
// ключ из файла и осуществляем верификацию
// читаем данные из файла-подписи
BinaryReader br = new BinaryReader(new FileStream("Zakaz" + nom + ".dat", FileMode.Open));
// читаем ключ для шифрования
string key = br.ReadString();
// читаем данные подписи
int n_sign = br.ReadInt32();
byte[] b_sign = br.ReadBytes(n_sign);
br.Close();
// импортируем параметры в провайдер шифрования
DSACryptoServiceProvider dsa = new DSACryptoServiceProvider();
dsa.FromXmlString(key);
// проводим верификацию подписей
// первый параметр - сгенерированный хэш объекта
// второй параметр - ключ
// третий параметр - цифровая подпись
if (dsa.VerifyHash(hashMessage, "1.3.14.3.2.26", b_sign))
{
MessageBox.Show("Успешная верификация!");
}
else
{
MessageBox.Show("Заказ был изменен. Ошибка верификации!");
}
}
}
}
示例6: SignedDecrypt
// -------------------------------------------------------------------------------
/// <summary>
/// SignedDecrypt the ciphertext.
/// </summary>
/// <param name="ciphertext">The ciphertext to be decrypted.</param>
/// <param name="compressStreamReader">A StreamReader for the uncompressing the stream</param>
/// <returns>The decrypted ciphertext (-> plaintext).</returns>
private byte[] SignedDecrypt(byte[] ciphertext, CompressStreamReaderDelegate compressStreamReader)
{
byte[] plaintext = null;
MemoryStream memoryStream = new MemoryStream(ciphertext);
// get the initialization vector
BinaryFormatter formatter = new BinaryFormatter();
byte[] IV = formatter.Deserialize(memoryStream) as byte[];
// get signature and DSA parameters
byte[] signature = formatter.Deserialize(memoryStream) as byte[];
DSAParameters dsaParameters = (DSAParameters) formatter.Deserialize(memoryStream);
DSACryptoServiceProvider dsaVerifier = new DSACryptoServiceProvider();
dsaVerifier.ImportParameters(dsaParameters);
//Creates the default implementation, which is RijndaelManaged.
SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
// creates a symmetric decryptor object with the specified Key and initialization vector (IV).
ICryptoTransform decryptor = rijn.CreateDecryptor(this.key, IV);
// prepare the Crypto Stream
CryptoStream encryptedData = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
MemoryStream plainData = null;
if (compressStreamReader != null)
{
// decrypt ciphertext
MemoryStream decryptedData = this.GetBytes(encryptedData);
decryptedData.Position = 0;
// decompress ciphertext
using (Stream sr = compressStreamReader(decryptedData))
{
plainData = this.GetBytes(sr);
sr.Close();
}
plainData.Position = 0;
}
else
{
// decrypt ciphertext
plainData = this.GetBytes(encryptedData);
plainData.Position = 0;
}
// Check Digital signature
SHA1 sha1Provider = new SHA1CryptoServiceProvider();
byte[] hashbytes = sha1Provider.ComputeHash(plainData);
if(!dsaVerifier.VerifyHash(hashbytes, CryptoConfig.MapNameToOID(SHA1), signature))
{
throw new Exception("OlympCryptography.SignedDecrypt: Invalid digital signature - data manipulated!");
}
plaintext = plainData.ToArray();
return plaintext;
}