Вычисляет подпись для заданного значения хэш.

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

Синтаксис

Visual Basic
Public Function SignHash ( _
	hash As Byte() _
) As Byte()
C#
public byte[] SignHash(
	byte[] hash
)
Visual C++
public:
array<unsigned char>^ SignHash(
	array<unsigned char>^ hash
)
JavaScript
function signHash(hash);

Параметры

hash
Type: array<System..::..Byte>[]()[][]
Подписываемое значение хэш.

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

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

Заметки

Функция тождественна CreateSignature(array<Byte>[]()[][]).

Примеры

Пример подписи и проверки подписи хэш.
Visual Basic Copy imageCopy Code
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
'
' Этот файл содержит информацию, являющуюся
' собственностью компании Крипто Про.
' 
' Любая часть этого файла не может быть скопирована,
' исправлена, переведена на другие языки,
' локализована или модифицирована любым способом,
' откомпилирована, передана по сети с или на
' любую компьютерную систему без предварительного
' заключения соглашения с компанией Крипто Про.
' 
' Программный код, содержащийся в этом файле, предназначен
' исключительно для целей обучения и не может быть использован
' для защиты информации.
' 
' Компания Крипто-Про не несет никакой
' ответственности за функционирование этого кода.

' Пример подписи и проверки подписи значения хэш.
' 
' Данный пример:
' 1.Подписывает произвольное значение хэш (полученное по алгоритму 
' ГОСТ 34.11, т. е. длиной 32 байта) на алгоритме ГОСТ Р 34.10-2001.
' 2.Проверяет полученную подпись и выводит результат.

Imports System
Imports System.Security.Cryptography
Imports CryptoPro.Sharpei

Class SignHash

    Shared Sub Main()
        Try
            ' Объект, реализующий алгоритм ГОСТ 3410.
            Dim Gost As New Gost3410CryptoServiceProvider()

            ' Хэш, который требуется подписать.
            Dim Hash As Byte() = {59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135}

            ' Получаем OID алгоритма хэширования его по имени.
            Dim OID As String = CryptoConfig.MapNameToOID("Gost3411")

            ' Вычисляем подпись.
            Dim SignedHashValue As Byte() = Gost.SignHash(Hash, OID)

            ' Проверяем правильность подписи и выводим результат.
            Dim b As Boolean = Gost.VerifyHash(Hash, OID, SignedHashValue)
            If b 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.11, т. е. длиной 32 байта) на алгоритме ГОСТ Р 34.10-2001.
// 2.Проверяет полученную подпись и выводит результат.

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;

using CryptoPro.Sharpei;

namespace Samples
{
    class SignHash
    {
        [STAThread]
        static void Main()
        {
            try
            {
                // Объект, реализующий алгоритм ГОСТ 3410.
                Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider();
                // Хэш, который требуется подписать.
                byte[] Hash = { 0xE4, 0x2C, 0x17, 0xAA, 0x76, 0x5F, 0xA7, 0xEC, 
                0xEC, 0x80, 0x35, 0x6D, 0x67, 0x42, 0x5E, 0x5D, 
                0xD7, 0xFA, 0x3E, 0x03, 0x05, 0x2D, 0xFD, 0x53,
                0xF8, 0x36, 0xAB, 0x55, 0x24, 0x00, 0xBD, 0x1B};
                // Подписываем значение хэш.
                byte[] SignedHash = Gost.SignHash(Hash);
                // Проверяем правильность подписи и выводим результат:
                bool b = Gost.VerifyHash(Hash, SignedHash);
                if (b)
                {
                    Console.WriteLine("Подпись верна.");
                }
                else
                {
                    Console.WriteLine("Подпись не верна.");
                }            
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

Разрешения

РазрешениеОписание
KeyContainerPermissionДля открытия существующего контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности: Demand .
KeyContainerPermissionДля создания контейнера с заданным (не случайным именем). Связанные перечисления: Create. Действия по обеспечению безопасности: Demand .
KeyContainerPermissionДля подписи на не случайном контейнере. Связанные перечисления: Sign. Действия по обеспечению безопасности: Demand .

Исключения

ИсключениеУсловие
System..::..ArgumentNullExceptionЗначение параметра hash равно nullNothingnullptrссылка null (Nothing в Visual Basic).
CryptographicExceptionОбъект не содержит секретного ключа или хэш имееет неправильный размер.

Версии CSP:

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

См. также: