Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2011, 14:57
maximprada maximprada вне форума
Прохожий
 
Регистрация: 12.10.2011
Сообщения: 12
Репутация: 10
Сообщение Цифровая подпись. Алгоритм DSA

Доброго времени суток ребята, подскажите кто нибудь знает как реализовать Алгоритм DSA на делфи ....
Ответить с цитированием
  #2  
Старый 24.10.2011, 16:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Какие-то сорсы на других языках есть?
Выкладывай, мож и можно.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 24.10.2011, 16:36
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Если имеется в виду этот алгоритм
http://wincrypt.chat.ru/dsa.htm
то да, реализовать можно.
__________________
Google в помощь
Ответить с цитированием
  #4  
Старый 24.10.2011, 19:32
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

В раздел работа.

И, кстати, с такие вопросы не для начинающих.
Ответить с цитированием
  #5  
Старый 24.10.2011, 20:44
Asmoday74 Asmoday74 вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Челябинск
Сообщения: 22
Версия Delphi: XE2
Репутация: 893
По умолчанию

Реализовать можно, знакомый когда-то писал курсовую как раз по этой теме. На сколько я знаю от него документации по данному вопросу крайне мало и вся она на английском языке. Так что думаю скорее тебе действительно в раздел работа.
Ответить с цитированием
  #6  
Старый 25.10.2011, 19:33
maximprada maximprada вне форума
Прохожий
 
Регистрация: 12.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

Вот вот ..мне тоже задали написать курсовой проект на эту тему, а реализовать на Delphi //
Я вот сижу и просто туплю..
что и как делать...
Ответить с цитированием
  #7  
Старый 25.10.2011, 19:35
maximprada maximprada вне форума
Прохожий
 
Регистрация: 12.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

Asmoday74, а не чего у твоего друга не осталось от того курсовика?!
Ответить с цитированием
  #8  
Старый 25.10.2011, 22:46
maximprada maximprada вне форума
Прохожий
 
Регистрация: 12.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

Нашел вот такой код...

Код:
uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATCRYPT2Lib_TLB,
    CHILKATDSALib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
crypt: TChilkatCrypt2;
hashStr: String;
dsa: TChilkatDsa;
pemPrivateKey: String;
hexSig: String;
dsa2: TChilkatDsa;
pemPublicKey: String;

begin


//  Use Chilkat Crypt to hash the contents of a file.
crypt := TChilkatCrypt2.Create(Self);
success := crypt.UnlockComponent('Anything for 30-day trial.');
if (success <> 1) then
  begin
    ShowMessage(crypt.LastErrorText);
    Exit;
  end;

crypt.EncodingMode := 'hex';
crypt.HashAlgorithm := 'sha-1';

//  Return the SHA-1 hash of a file.  The file may be any size.
//  The Chilkat Crypt component will stream the file when
//  computing the hash, keeping the memory usage constant
//  and reasonable.
//  The 20-byte SHA-1 hash is returned as a hex-encoded string.
hashStr := crypt.HashFileENC('hamlet.xml');

dsa := TChilkatDsa.Create(Self);

//  The Chilkat Crypt and Chilkat DSA components are separate
//  products.  To license both, it's least expensive to purchase
//  the "Chilkat Bundle" which provides licenses to all the
//  Chilkat components.
success := dsa.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(dsa.LastErrorText);
    Exit;
  end;

//  Load a DSA private key from a PEM file.  Chilkat DSA
//  provides the ability to load and save DSA public and private
//  keys from encrypted or non-encrypted PEM or DER.
//  The LoadText method is for convenience only.  You may
//  use any means to load the contents of a PEM file into
//  a string.

pemPrivateKey := dsa.LoadText('dsa_priv.pem');
success := dsa.FromPem(pemPrivateKey);
if (success <> 1) then
  begin
    ShowMessage(dsa.LastErrorText);
    Exit;
  end;

//  You may optionally verify the key to ensure that it is a valid
//  DSA key.
success := dsa.VerifyKey();
if (success <> 1) then
  begin
    ShowMessage(dsa.LastErrorText);
    Exit;
  end;

//  Load the hash to be signed into the DSA object:
success := dsa.SetEncodedHash('hex',hashStr);
if (success <> 1) then
  begin
    ShowMessage(dsa.LastErrorText);
    Exit;
  end;

//  Now that the DSA object contains both the private key and hash,
//  it is ready to create the signature:
success := dsa.SignHash();
if (success <> 1) then
  begin
    ShowMessage(dsa.LastErrorText);
    Exit;
  end;

//  If SignHash is successful, the DSA object contains the
//  signature.  It may be accessed as a hex or base64 encoded
//  string.  (It is also possible to access directly in byte array form via
//  the "Signature" property.)

hexSig := dsa.GetEncodedSignature('hex');
Memo1.Lines.Add('Signature:');
Memo1.Lines.Add(hexSig);

//  -----------------------------------------------------------
//  Step 2: Verify the DSA Signature
//  -----------------------------------------------------------

dsa2 := TChilkatDsa.Create(Self);

//  Load the DSA public key to be used for verification:

pemPublicKey := dsa2.LoadText('dsa_pub.pem');
success := dsa2.FromPublicPem(pemPublicKey);
if (success <> 1) then
  begin
    ShowMessage(dsa2.LastErrorText);
    Exit;
  end;

//  Load the hash to be verified against the signature.
success := dsa2.SetEncodedHash('hex',hashStr);
if (success <> 1) then
  begin
    ShowMessage(dsa2.LastErrorText);
    Exit;
  end;

//  Load the signature:
success := dsa2.SetEncodedSignature('hex',hexSig);
if (success <> 1) then
  begin
    ShowMessage(dsa2.LastErrorText);
    Exit;
  end;

//  Verify:
success := dsa2.Verify();
if (success <> 1) then
  begin
    ShowMessage(dsa2.LastErrorText);
  end
else
  begin
    Memo1.Lines.Add('DSA Signature Verified!');
  end;


end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025