Вычисление значения хэш для указанного интервала из байтового
массива и его подпись.
Пространство имен:
CryptoPro.Sharpei
Сборка:
CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)
Синтаксис
JavaScript |
---|
function signData(buffer, offset, count, hashAlg); |
Возвращаемое значение
Подпись данных, выполненная по алгоритму
ГОСТ Р 34.10
Примеры
Пример подписи и
проверки подписи данных.
Visual Basic | Copy Code |
---|
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
'
' Этот файл содержит информацию, являющуюся
' собственностью компании Крипто Про.
'
' Любая часть этого файла не может быть скопирована,
' исправлена, переведена на другие языки,
' локализована или модифицирована любым способом,
' откомпилирована, передана по сети с или на
' любую компьютерную систему без предварительного
' заключения соглашения с компанией Крипто Про.
'
' Программный код, содержащийся в этом файле, предназначен
' исключительно для целей обучения и не может быть использован
' для защиты информации.
'
' Компания Крипто-Про не несет никакой
' ответственности за функционирование этого кода.
' Пример подписи и проверки текстовой строки
'
' Данный пример
' 1. Подписывает фрагмент текстовой строки на алгоритме
' ГОСТ Р 34.10-2001.
' 2. Проверяет правильность подписи и выводит результат.
Imports System
Imports System.Text
Imports CryptoPro.Sharpei
Class SignData3
Shared Sub Main()
Try
Dim ByteConverter As ASCIIEncoding = New ASCIIEncoding()
' Данные для подписи
Dim originalData As Byte() = ByteConverter.GetBytes("Подписать эту строку.")
' Объект, реализующий алгоритм ГОСТ 3410 через CSP.
Dim Gost As Gost3410CryptoServiceProvider = New Gost3410CryptoServiceProvider()
' Объект, реализующий алгоритм хэширования ГОСТ 3411
Dim GostHash As Gost3411CryptoServiceProvider = New Gost3411CryptoServiceProvider()
' Подписываем данные: 7 байтов, начиная с пятого.
Dim signedData As Byte() = Gost.SignData(originalData, 5, 7, GostHash)
Dim smallArray As Byte() = New Byte(7) {}
' Копируем подписанные байты в новый массив:
Array.Copy(originalData, 5, smallArray, 0, 7)
' Проверяем правильность подписи и выводим результат.
If (Gost.VerifyData(smallArray, GostHash, signedData)) Then
Console.WriteLine("Подпись верна.")
Else
Console.WriteLine("Подпись вычислена неверно.")
End If
Catch e As ArgumentNullException
Console.WriteLine(e.Message)
End Try
End Sub
End Class
|
C# | Copy Code |
---|
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
//
// Этот файл содержит информацию, являющуюся
// собственностью компании Крипто-Про.
//
// Любая часть этого файла не может быть скопирована,
// исправлена, переведена на другие языки,
// локализована или модифицирована любым способом,
// откомпилирована, передана по сети с или на
// любую компьютерную систему без предварительного
// заключения соглашения с компанией Крипто-Про.
//
// Программный код, содержащийся в этом файле, предназначен
// исключительно для целей обучения и не может быть использован
// для защиты информации.
//
// Компания Крипто-Про не несет никакой
// ответственности за функционирование этого кода.
// Пример подписи и проверки текстовой строки
//
// Данный пример
// 1. Подписывает фрагмент текстовой строки на алгоритме
// ГОСТ Р 34.10-2001.
// 2. Проверяет правильность подписи и выводит результат.
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using CryptoPro.Sharpei;
namespace Samples
{
class SignData3
{
[STAThread]
static void Main()
{
try
{
ASCIIEncoding ByteConverter = new ASCIIEncoding();
// Данные для подписи
byte[] originalData = ByteConverter.GetBytes("Подписать эту строку.");
// Объект, реализующий алгоритм ГОСТ 3410 через CSP.
Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider();
// Объект, реализующий алгоритм хэширования ГОСТ 3411
Gost3411CryptoServiceProvider GostHash = new Gost3411CryptoServiceProvider();
// Подписываем данные: 7 байтов, начиная с пятого.
byte[] signedData = Gost.SignData(originalData, 5, 7, GostHash);
byte[] smallArray = new byte[7];
// Копируем подписанные байты в новый массив:
Array.Copy(originalData, 5, smallArray, 0, 7);
// Проверяем правильность подписи и выводим результат.
if (Gost.VerifyData(smallArray, GostHash, signedData))
{
Console.WriteLine("Подпись вычислена верно.");
}
else
{
Console.WriteLine("Подпись вычислена неверно.");
}
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.Message);
}
}
}
}
|
Разрешения
Разрешение | Описание |
---|
KeyContainerPermission | Для открытия существующего
контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности:
Demand
. |
KeyContainerPermission | Для создания контейнера с заданным
(не случайным именем). Связанные перечисления: Create. Действия по обеспечению безопасности:
Demand
. |
KeyContainerPermission | Для подписи на не случайном контейнере.
Связанные перечисления: Sign. Действия по обеспечению безопасности:
Demand
. |
Исключения
Исключение | Условие |
---|
CryptographicException | halg не является
алгоритмом хэширования по ГОСТ Р 34.11. |
Версии CSP:
КриптоПро CSP 2.0, КриптоПро CSP 3.0, КриптоПро CSP 3.6
См. также: