Вычисляет значение хэш для байтового массива и подписывает его.
Пространство имен:
CryptoPro.SharpeiСборка: CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)
Синтаксис
Visual Basic |
---|
Public Function SignData ( _ buffer As Byte(), _ hashAlg As Object _ ) As Byte() |
C# |
---|
public byte[] SignData( byte[] buffer, Object hashAlg ) |
Visual C++ |
---|
public: array<unsigned char>^ SignData( array<unsigned char>^ buffer, Object^ hashAlg ) |
JavaScript |
---|
function signData(buffer, hashAlg); |
Параметры
- buffer
- Type: array<System..::..Byte>[]()[][]
Данные, для которых вычисляется подпись.
- hashAlg
- Type: System..::..Object
Объект, реализующий алгоритм хэширования.
Возвращаемое значение
Подпись данных, выполненная по алгоритму ГОСТ Р 34.10.Примеры
Пример подписи и
проверки подписи данных.
Visual Basic | Copy Code |
---|---|
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены. ' ' Этот файл содержит информацию, являющуюся ' собственностью компании Крипто Про. ' ' Любая часть этого файла не может быть скопирована, ' исправлена, переведена на другие языки, ' локализована или модифицирована любым способом, ' откомпилирована, передана по сети с или на ' любую компьютерную систему без предварительного ' заключения соглашения с компанией Крипто Про. ' ' Программный код, содержащийся в этом файле, предназначен ' исключительно для целей обучения и не может быть использован ' для защиты информации. ' ' Компания Крипто-Про не несет никакой ' ответственности за функционирование этого кода. ' Пример подписи и проверки подписи текстовой строки. ' ' Данный пример ' 1. Подписывает текстовую строку (в виде байтового массива) ' на алгоритме ГОСТ Р 34.10-2001. ' 2. Проверяет правильность подписи и выводит результат. Imports System Imports CryptoPro.Sharpei Class SignData1 Shared Sub Main() Try ' Объект, реализующий алгоритм ГОСТ 3410. Dim Gost As Gost3410CryptoServiceProvider = New Gost3410CryptoServiceProvider() ' Данные для подписи. Dim Data As Byte() = New Byte() {59, 4, 248, 102, 77, 97, 142, 201, 21, _ 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135} 'Объект, реализующий алгоритм хэширования ГОСТ 3411. Dim GostHash As Gost3411CryptoServiceProvider = New Gost3411CryptoServiceProvider() ' Подписываем данные: Dim SignedValue As Byte() = Gost.SignData(Data, GostHash) ' Проверяем правильность подписи и выводим результат. Dim b As Boolean = Gost.VerifyData(Data, GostHash, SignedValue) 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 Code |
---|---|
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены. // // Этот файл содержит информацию, являющуюся // собственностью компании Крипто-Про. // // Любая часть этого файла не может быть скопирована, // исправлена, переведена на другие языки, // локализована или модифицирована любым способом, // откомпилирована, передана по сети с или на // любую компьютерную систему без предварительного // заключения соглашения с компанией Крипто-Про. // // Программный код, содержащийся в этом файле, предназначен // исключительно для целей обучения и не может быть использован // для защиты информации. // // Компания Крипто-Про не несет никакой // ответственности за функционирование этого кода. // Пример подписи и проверки подписи текстовой строки. // // Данный пример // 1. Подписывает текстовую строку (в виде байтового массива) // на алгоритме ГОСТ Р 34.10-2001. // 2. Проверяет правильность подписи и выводит результат. using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using CryptoPro.Sharpei; namespace Samples { class SignData1 { [STAThread] static void Main() { try { // Объект, реализующий алгоритм ГОСТ 3410. Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider(); // Данные для подписи. byte[] Data = { 59, 4, 248, 102, 77, 97, 142, 201, 21, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135 }; // Объект, реализующий алгоритм хэширования ГОСТ 3411. Gost3411CryptoServiceProvider GostHash = new Gost3411CryptoServiceProvider(); // Подписываем данные: byte[] SignedValue = Gost.SignData(Data, GostHash); //Проверяем правильность подписи и выводим результат. bool b=Gost.VerifyData(Data, GostHash, SignedValue); if (b) { Console.WriteLine("Подпись вычислена верно."); } else { Console.WriteLine("Подпись вычислена неверно."); } } catch (ArgumentNullException e) { Console.WriteLine(e.Message); } } } } |
Примеры
Пример подписи и
проверки подписи для файла.
Visual Basic | Copy Code |
---|---|
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены. ' ' Этот файл содержит информацию, являющуюся ' собственностью компании Крипто Про. ' ' Любая часть этого файла не может быть скопирована, ' исправлена, переведена на другие языки, ' локализована или модифицирована любым способом, ' откомпилирована, передана по сети с или на ' любую компьютерную систему без предварительного ' заключения соглашения с компанией Крипто Про. ' ' Программный код, содержащийся в этом файле, предназначен ' исключительно для целей обучения и не может быть использован ' для защиты информации. ' ' Компания Крипто-Про не несет никакой ' ответственности за функционирование этого кода. ' Пример подписи и проверки подписи файла. ' ' Данный пример: ' 1.Вычисляет значение хэш для файла Test.txt на алгоритме ' ГОСТ Р 34.11. ' 2.Подписывает этот хэш на алгоритме ГОСТ Р 34.10-2001 ' и выводит значение подписи. ' 3.Проверяет правильность подписи. ' ' Перед запуском данного примера необходимо создать файл ' "c:\temp\Test.txt" Imports System Imports System.IO Imports CryptoPro.Sharpei Module SignFile1 Sub Main() Dim test As Gost3410 = Nothing If (test Is Nothing) Then Console.WriteLine("lalal") End If 'Полное имя файла Dim path As New String("c:\temp\Test.txt") 'Открываем на чтение Dim fs As New FileStream(path, FileMode.Open, FileAccess.Read) 'Объект, реализующий алгоритм вычисления подписи Dim Gost As New Gost3410CryptoServiceProvider() 'Объект, реализующий алгоритм хэширования Dim GostHash As New Gost3411CryptoServiceProvider() 'Вычисляем хэш для потока данных Dim HashValue As Byte() = GostHash.ComputeHash(fs) 'Вычисляем подпись для хэша и выводим результат Dim SignedData As Byte() = Gost.SignHash(HashValue, "1.2.643.2.2.9") Console.WriteLine("Значение подписи:") Dim i As Integer Do While (i < SignedData.Length) Console.Write("{0:X2}", SignedData(i)) Console.Write(" ") i = i + 1 Loop 'Проверяем праввильность подписи и выводим результат. Dim b As Boolean b = Gost.VerifyHash(HashValue, "1.2.643.2.2.9", SignedData) Console.WriteLine() If b Then Console.WriteLine("Подпись верна") Else Console.WriteLine("Подпись не верна") End If End Sub 'Main End Module |
C# | Copy Code |
---|---|
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены. // // Этот файл содержит информацию, являющуюся // собственностью компании Крипто-Про. // // Любая часть этого файла не может быть скопирована, // исправлена, переведена на другие языки, // локализована или модифицирована любым способом, // откомпилирована, передана по сети с или на // любую компьютерную систему без предварительного // заключения соглашения с компанией Крипто-Про. // // Программный код, содержащийся в этом файле, предназначен // исключительно для целей обучения и не может быть использован // для защиты информации. // // Компания Крипто-Про не несет никакой // ответственности за функционирование этого кода. // Пример подписи и проверки подписи файла. // // Данный пример: // 1.Вычисляет значение хэш для файла Test.txt на алгоритме // ГОСТ Р 34.11. // 2.Подписывает этот хэш на алгоритме ГОСТ Р 34.10-2001 // и выводит результат. // 3.Проверяет правильность подписи. // // Перед запуском данного примера необходимо создать файл // "c:\temp\Test.txt" using System; using System.IO; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using CryptoPro.Sharpei; namespace Samples { class SignFile1 { [STAThread] static void Main() { // Полное имя файла. string path = @"c:\temp\Test.txt"; // Открываем на чтение. FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None); // Объект, реализующий алгоритм вычисления подписи. Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider(); // Объект, реализующий алгоритм хэширования. Gost3411CryptoServiceProvider GostHash = new Gost3411CryptoServiceProvider(); // Подсчитываем значение хэш для потока данных. byte[] HashValue = GostHash.ComputeHash(fs); // Считаем подпись для хэш и выводим результат: byte[] SignedData = Gost.SignHash(HashValue); Console.WriteLine("Подпись:"); for (int i = 0; i < SignedData.Length; i++) Console.Write("{0:X2}", SignedData[i] + " "); bool b; // Проверям правильность подписи для значения хэш и выводим результат. b = Gost.VerifyHash(HashValue, SignedData); if (b) { Console.WriteLine("Подпись верна"); } else { Console.WriteLine("Подпись не верна"); } } } } |
Разрешения
Разрешение | Описание |
---|---|
KeyContainerPermission | Для открытия существующего контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности: Demand . |
KeyContainerPermission | Для создания контейнера с заданным (не случайным именем). Связанные перечисления: Create. Действия по обеспечению безопасности: Demand . |
KeyContainerPermission | Для подписи на не случайном контейнере. Связанные перечисления: Sign. Действия по обеспечению безопасности: Demand . |
Исключения
Исключение | Условие |
---|---|
CryptographicException | hashAlg не является алгоритмом хэширования по ГОСТ Р 34.11. |
Версии CSP:
КриптоПро CSP 2.0, КриптоПро CSP 3.0, КриптоПро CSP 3.6