Changeset 780


Ignore:
Timestamp:
Oct 25, 2009, 6:53:32 PM (12 years ago)
Author:
kopal
Message:
  • DES, removed bug if inputStream/outputStream null references after an execution
  • KeySearcher now calculates timespans even with very big integer values correctly
Location:
trunk/CrypPlugins
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/DES/DES.cs

    r772 r780  
    189189                if (controlSlave is object && ((DESControl)controlSlave).InputStream is object)
    190190                    ((DESControl)controlSlave).InputStream.Close();
     191                InputStream = null;
     192                OutputStream = null;
    191193            }
    192194        }
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r761 r780  
    136136        }
    137137
    138         public int initKeyIteration(string key)
    139         {
    140             int counter = 1;
     138        public double initKeyIteration(string key)
     139        {
     140            double counter = 1;
    141141            this.key = key;
    142142            int pcount = 0;
     
    275275                }
    276276
    277                 int size = Pattern.initKeyIteration(settings.Key);
     277                double size = Pattern.initKeyIteration(settings.Key);
    278278                int bytesToUse = CostMaster.getBytesToUse();
    279279                string key;
    280                 int counter = 0;
    281                 int doneKeys = 0;
     280                double keycounter = 0;
     281                double doneKeys = 0;
    282282                string text = "";
    283283                LinkedListNode<ValueKey> linkedListNode;
     
    329329                    }
    330330
    331                     counter++;                   
    332                     ProgressChanged(counter, size);
     331                    keycounter++;                   
     332                    ProgressChanged(keycounter, size);
    333333
    334334                    //Key per second calculation
     
    338338                    {
    339339                        lastTime = DateTime.Now;
    340                         GuiLogMessage("Working with " + doneKeys + " Keys/sec", NotificationLevel.Info);                       
    341                        
    342                         int seconds = (size - counter) / doneKeys;
    343                         TimeSpan secondsleft = new TimeSpan(0, 0, 0, seconds, 0);
    344 
     340                        double time = ((size - keycounter) / doneKeys);                       
     341                        TimeSpan timeleft = new TimeSpan(-1) ;
     342
     343                        try
     344                        {
     345                            if (time / (24 * 60 * 60) <= int.MaxValue)
     346                            {
     347                                int days = (int)(time / (24 * 60 * 60));
     348                                time = time - (days * 24 * 60 * 60);
     349                                int hours = (int)(time / (60 * 60));
     350                                time = time - (hours * 60 * 60);
     351                                int minutes = (int)(time / 60);
     352                                time = time - (minutes * 60);
     353                                int seconds = (int)time;
     354
     355                                timeleft = new TimeSpan(days, hours, minutes, (int)seconds, 0);
     356                            }                           
     357                        }
     358                        catch
     359                        {
     360                            //can not calculate time span
     361                        }
    345362                        ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    346363                        {
    347364                            ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).keysPerSecond.Text = "" + doneKeys;
    348                             ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).timeLeft.Text = "" + secondsleft;
    349                             ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).endTime.Text = "" + DateTime.Now.AddSeconds(seconds);
     365                            if (timeleft != new TimeSpan(-1))
     366                            {
     367                                ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).timeLeft.Text = "" + timeleft;
     368                                try
     369                                {
     370                                    ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).endTime.Text = "" + DateTime.Now.Add(timeleft);
     371                                }catch{
     372                                    ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).endTime.Text = "in a time far, far away...";
     373                                }
     374                            }
     375                            else
     376                            {
     377                                ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).timeLeft.Text = "incalculable :-)";
     378                                ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).endTime.Text = "in a time far, far away...";
     379                            }
     380                           
    350381
    351382                        }
     
    371402                    }
    372403
    373                 } while (Pattern.nextKey() && !stop);
    374 
    375                 text = "Calculated value/key - list:\r\n";
    376                 linkedListNode = costList.First;
    377                 while (linkedListNode != null)
    378                 {
    379                     text += linkedListNode.Value.value + " = " + linkedListNode.Value.key + "\r\n";
    380                     linkedListNode = linkedListNode.Next;
    381                 }
    382                 ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    383                 {
    384                     ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).logging.Text = text;
    385                 }
    386                 , null);
     404                } while (Pattern.nextKey() && !stop);               
    387405               
    388406            }//end if
Note: See TracChangeset for help on using the changeset viewer.