Проверьте подпись DSA в C#, это использует закодированный формат BER/DER ASN.1

Стек уже существует, таким образом, можно предположить это при написании кода. Стек содержит обратные адреса функций, локальных переменных и переменных, которые передаются между функциями. Существуют также регистры стека, такие как BP, SP (Указатель вершины стека), встроенный, который можно использовать, следовательно встроенные команды, которые Вы упомянули. Если бы стек не был уже реализован, то функции не могли бы работать и кодировать поток, не мог работать.

6
задан CodesInChaos 19 September 2013 в 11:50
поделиться

3 ответа

Часть кода, которая проверяет подпись DSA, может быть найдено в проекте NSsh . Это не соответствует вашим конкретным потребностям, поскольку открытый ключ не извлекается из сертификата X.509, но может дать вам отправную точку.

1
ответ дан 17 December 2019 в 04:48
поделиться

Другим хорошим примером является код DotNetAutoUpdate . Он использует RSA, но переключиться на DSA должно быть довольно просто. В частности, взгляните на этот файл:

http://code.google.com/p/dotnetautoupdate/source/browse/trunk/source/DotNetAutoUpdate/UpdateKeys.cs


Изменить: в основном вы хотите что-то похожее на это:
var sha1 = new SHA1Managed();
var hash = sha1.ComputeHash(inputStream);

var signatureFormatter = new DSASignatureDeformatter(dsa);
signatureFormatter.SetHashAlgorithm("SHA1");
bool valid = signatureFormatter.VerifySignature(hash, signature); 

Дополнительные сведения о MSDN .


Изменить: Другой вариант - библиотеки Mono.Security:
  • Есть класс для чтения ASN1
  • Есть также сборка для чтения сертификатов X.509.

Не уверен, поможет ли это ...

1
ответ дан 17 December 2019 в 04:48
поделиться

Сортировка по id , вероятно, использует сканирование кластеризованного индекса, тогда как сортировка по datetime использует либо сортировку, либо поиск по индексу.

Оба эти метода медленнее сканирования кластерного индекса.

Если ваша таблица сгруппирована по id , в основном это означает, что она уже отсортирована. Записи содержатся в B + Tree , который имеет связанный список, связывающий страницы в порядке id . Механизм должен просто просмотреть связанный список, чтобы получить записи, упорядоченные по id .

Если id были вставлены в последовательном порядке, это означает, что физический порядок строк будет соответствовать логическому порядку, и сканирование кластерного индекса будет еще быстрее.

Если вы хотите, чтобы ваши записи были упорядочены по datetime , есть два варианта:

  • Возьмите все записи из таблицы и отсортируйте их. Медлительность очевидна.
  • Используйте индекс для datetime . Индекс хранится в отдельном пространстве диска, это означает, что движку необходимо перемещаться между страницами индекса и страницами таблицы во вложенном цикле. Он также работает медленнее.

Чтобы улучшить порядок, вы можете создать отдельный индекс покрытия на datetime :

CREATE INDEX ix_mytable_datetime ON mytable (datetime) INCLUDE (field1, field2, …)

и включить в этот индекс все столбцы, которые вы используете в своем запросе.

Этот индекс похож на теневую копию вашей таблицы, но с данными, отсортированными в другом порядке.

2
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: