Вычисление значения хэш для указанного интервала из байтового массива и его подпись.

Пространство имен:  CryptoPro.Sharpei
Сборка:  CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)

Синтаксис

Visual Basic
Public Function SignData ( _
	buffer As Byte(), _
	offset As Integer, _
	count As Integer, _
	hashAlg As Object _
) As Byte()
C#
public byte[] SignData(
	byte[] buffer,
	int offset,
	int count,
	Object hashAlg
)
Visual C++
public:
array<unsigned char>^ SignData(
	array<unsigned char>^ buffer, 
	int offset, 
	int count, 
	Object^ hashAlg
)
JavaScript
function signData(buffer, offset, count, hashAlg);

Параметры

buffer
Type: array<System..::..Byte>[]()[][]
Данные, для которых вычисляется подпись.
offset
Type: System..::..Int32
Смещение от начала массива.
count
Type: System..::..Int32
Число байтов для подсчета хэша.
hashAlg
Type: System..::..Object
Объект, реализующий алгоритм хэширования.

Возвращаемое значение

Подпись данных, выполненная по алгоритму ГОСТ Р 34.10

Примеры

Пример подписи и проверки подписи данных.
Visual Basic Copy imageCopy 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 imageCopy 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 .

Исключения

ИсключениеУсловие
CryptographicExceptionhalg не является алгоритмом хэширования по ГОСТ Р 34.11.

Версии CSP:

КриптоПро CSP 2.0, КриптоПро CSP 3.0, КриптоПро CSP 3.6

См. также: