home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 December / Chip_2002-12_cd1.bin / ctenari / Hytha / MultiHSH.exe / SR.RAR / SR / Unit1.pas < prev   
Pascal/Delphi Source File  |  2002-10-21  |  7KB  |  307 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, DCPcrypt2, DCPmd5, DCPmd4, DCPhaval, DCPtiger,
  8.   DCPsha512, DCPsha256, DCPsha1, DCPripemd160, DCPripemd128;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     DCP_md51: TDCP_md5;
  13.     Edit1: TEdit;
  14.     Button1: TButton;
  15.     Button2: TButton;
  16.     DCP_md41: TDCP_md4;
  17.     Memo1: TMemo;
  18.     DCP_haval1: TDCP_haval;
  19.     DCP_ripemd1281: TDCP_ripemd128;
  20.     DCP_ripemd1601: TDCP_ripemd160;
  21.     DCP_sha11: TDCP_sha1;
  22.     DCP_sha2561: TDCP_sha256;
  23.     DCP_sha3841: TDCP_sha384;
  24.     DCP_sha5121: TDCP_sha512;
  25.     DCP_tiger1: TDCP_tiger;
  26.     Memo2: TMemo;
  27.     Button3: TButton;
  28.     Label1: TLabel;
  29.     CheckBox1: TCheckBox;
  30.     Button4: TButton;
  31.     Button5: TButton;
  32.     SaveDialog1: TSaveDialog;
  33.     OpenDialog1: TOpenDialog;
  34.     Button6: TButton;
  35.     OpenDialog2: TOpenDialog;
  36.     procedure Button1Click(Sender: TObject);
  37.     procedure Button2Click(Sender: TObject);
  38.     procedure Button3Click(Sender: TObject);
  39.     procedure CheckBox1Click(Sender: TObject);
  40.     procedure Button4Click(Sender: TObject);
  41.     procedure Button5Click(Sender: TObject);
  42.     procedure Button6Click(Sender: TObject);
  43.   private
  44.     { Private declarations }
  45.   public
  46.     { Public declarations }
  47.   end;
  48.  
  49. var
  50.   Form1: TForm1;
  51.  
  52. implementation
  53.  
  54. {$R *.dfm}
  55.  
  56.  
  57. procedure TForm1.Button1Click(Sender: TObject);
  58. begin
  59.  Form1.Close;
  60. end;
  61.  
  62. procedure TForm1.Button2Click(Sender: TObject);
  63. type HBuf=array[0..$FFFF] of Byte;
  64. var S:String;
  65.     H:HBuf;
  66.  
  67.   function HStr(B:HBuf;L:Word):String;
  68.   var Pom:String;
  69.       I:Word;
  70.   begin
  71.     Pom:='';
  72.     for I:=0 to ((L div 8)-1) do
  73.       Pom:=Pom+IntToHex(B[I],2);
  74.     HStr:=Pom;
  75.   end;
  76.  
  77. begin
  78.  Memo1.Lines.Clear;
  79.  
  80.  with DCP_md41 do begin
  81.    Init;
  82.    S:=Edit1.Text;Update(S[1],Length(S));
  83.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  84.  end;
  85.  with DCP_md51 do begin
  86.    Init;
  87.    S:=Edit1.Text;Update(S[1],Length(S));
  88.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  89.  end;
  90.  with DCP_ripemd1281 do begin
  91.    Init;
  92.    S:=Edit1.Text;Update(S[1],Length(S));
  93.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  94.  end;
  95.  with DCP_ripemd1601 do begin
  96.    Init;
  97.    S:=Edit1.Text;Update(S[1],Length(S));
  98.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  99.  end;
  100.  with DCP_tiger1 do begin
  101.    Init;
  102.    S:=Edit1.Text;Update(S[1],Length(S));
  103.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  104.  end;
  105.  with DCP_haval1 do begin
  106.    Init;
  107.    S:=Edit1.Text;Update(S[1],Length(S));
  108.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  109.  end; 
  110.  with DCP_sha11 do begin
  111.    Init;
  112.    S:=Edit1.Text;Update(S[1],Length(S));
  113.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  114.  end;
  115.  with DCP_sha2561 do begin
  116.    Init;
  117.    S:=Edit1.Text;Update(S[1],Length(S));
  118.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  119.  end;
  120.  with DCP_sha3841 do begin
  121.    Init;
  122.    S:=Edit1.Text;Update(S[1],Length(S));
  123.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  124.  end;
  125.  with DCP_sha5121 do begin
  126.    Init;
  127.    S:=Edit1.Text;Update(S[1],Length(S));
  128.    Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  129.  end;
  130.  
  131. end;
  132.  
  133. procedure TForm1.Button3Click(Sender: TObject);
  134. var I:Word;
  135.     Stejne:Boolean;
  136. begin
  137.   Stejne:=True;
  138.   if Memo1.Lines.Count<>Memo2.Lines.Count then Stejne:=False else begin
  139.     for I:=0 to (Memo2.Lines.Count-1) do begin
  140.       if Memo1.Lines[I]<>Memo2.Lines[I] then
  141.         begin
  142.           Stejne:=False;
  143.           Break;
  144.         end;
  145.     end;
  146.   end;
  147.  
  148.   if Stejne then begin
  149.     Label1.Caption:='OK:  Hashes are the same';
  150.     Label1.Font.Color:=$00FF00;
  151.   end else begin
  152.     Label1.Caption:='ERR: Hashes are different';
  153.     Label1.Font.Color:=$0000FF;
  154.   end;
  155. end;
  156.  
  157. procedure TForm1.CheckBox1Click(Sender: TObject);
  158. begin
  159.  Memo1.ReadOnly:=not(CheckBox1.Checked);
  160. end;
  161.  
  162. procedure TForm1.Button4Click(Sender: TObject);
  163. begin
  164.   if SaveDialog1.Execute then begin
  165.     Memo1.Lines.SaveToFile(SaveDialog1.FileName);
  166.   end;
  167. end;
  168.  
  169. procedure TForm1.Button5Click(Sender: TObject);
  170. begin
  171.   if OpenDialog1.Execute then begin
  172.     Memo2.Lines.LoadFromFile(OpenDialog1.FileName);
  173.   end;
  174. end;
  175.  
  176. procedure TForm1.Button6Click(Sender: TObject);
  177. type HBuf=array[0..$FFFF] of Byte;
  178. var S:String;
  179.     H,H2:HBuf;
  180.     F:File;
  181.     E:Integer;
  182.  
  183.   function HStr(B:HBuf;L:Word):String;
  184.   var Pom:String;
  185.       I:Word;
  186.   begin
  187.     Pom:='';
  188.     for I:=0 to ((L div 8)-1) do
  189.       Pom:=Pom+IntToHex(B[I],2);
  190.     HStr:=Pom;
  191.   end;
  192.  
  193. begin
  194.  if OpenDialog2.Execute then begin
  195.    ////////// init
  196.    Memo1.Lines.Clear;
  197.    SaveDialog1.FileName:=OpenDialog2.FileName+'.HSH';
  198.  
  199.    AssignFile(F,OpenDialog2.FileName);
  200.    Reset(F,1);
  201.  
  202.    with DCP_md41 do begin
  203.      Init;
  204.    end;
  205.    with DCP_md51 do begin
  206.      Init;
  207.    end;
  208.    with DCP_ripemd1281 do begin
  209.      Init;
  210.    end;
  211.    with DCP_ripemd1601 do begin
  212.      Init;
  213.    end;
  214.    with DCP_tiger1 do begin
  215.      Init;
  216.    end;
  217.    with DCP_haval1 do begin
  218.      Init;
  219.    end;
  220.    with DCP_sha11 do begin
  221.      Init;
  222.    end;
  223.    with DCP_sha2561 do begin
  224.      Init;
  225.    end;
  226.    with DCP_sha3841 do begin
  227.      Init;
  228.    end;
  229.    with DCP_sha5121 do begin
  230.      Init;
  231.    end;
  232.  
  233.    ////////// loop
  234.    while not eof(F) do begin
  235.  
  236.      BlockRead(F,H2,$7FFF,E);
  237.  
  238.      with DCP_md41 do begin
  239.        Update(H2,E);
  240.      end;
  241.      with DCP_md51 do begin
  242.        Update(H2,E);
  243.      end;
  244.      with DCP_ripemd1281 do begin
  245.        Update(H2,E);
  246.      end;
  247.      with DCP_ripemd1601 do begin
  248.        Update(H2,E);
  249.      end;
  250.      with DCP_tiger1 do begin
  251.        Update(H2,E);
  252.      end;
  253.      with DCP_haval1 do begin
  254.        Update(H2,E);
  255.      end;
  256.      with DCP_sha11 do begin
  257.        Update(H2,E);
  258.      end;
  259.      with DCP_sha2561 do begin
  260.        Update(H2,E);
  261.      end;
  262.      with DCP_sha3841 do begin
  263.        Update(H2,E);
  264.      end;
  265.      with DCP_sha5121 do begin
  266.        Update(H2,E);
  267.      end;
  268.    end;
  269.    ////////// final
  270.    with DCP_md41 do begin
  271.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  272.    end;
  273.    with DCP_md51 do begin
  274.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  275.    end;
  276.    with DCP_ripemd1281 do begin
  277.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  278.    end;
  279.    with DCP_ripemd1601 do begin
  280.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  281.    end;
  282.    with DCP_tiger1 do begin
  283.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  284.    end;
  285.    with DCP_haval1 do begin
  286.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  287.    end;
  288.    with DCP_sha11 do begin
  289.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  290.    end;
  291.    with DCP_sha2561 do begin
  292.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  293.    end;
  294.    with DCP_sha3841 do begin
  295.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  296.    end;
  297.    with DCP_sha5121 do begin
  298.      Final(H);Memo1.Lines.Add(Algorithm+': "'+HStr(H,HashSize)+'"');
  299.    end;
  300.    CloseFile(F);
  301. ////////// Konec hashovani
  302.  end;
  303.  
  304. end;
  305.  
  306. end.
  307.