コード例 #1
0
        public void ComputeTest()
        {
            var hnull = MD5HashHelper.Compute(null);

            Assert.IsNull(hnull);

            var hempty = MD5HashHelper.Compute(Array.Empty <byte>());

            Assert.IsNotNull(hempty);
            Assert.AreEqual(hempty.Length, 32);
            Assert.AreEqual(hempty, "d41d8cd98f00b204e9800998ecf8427e");

            var a1  = new byte[] { 0x00, 0x01, 0x02, 0x03 };
            var h1a = MD5HashHelper.Compute(a1);

            Assert.AreEqual(h1a.Length, 32);
            Assert.AreEqual(h1a, "37b59afd592725f9305e484a5d7f5168");

            var a2  = new byte[] { 0x00, 0x01, 0x02, 0x04 };
            var h2a = MD5HashHelper.Compute(a2);

            Assert.AreEqual(h2a.Length, 32);
            Assert.AreEqual(h2a, "46c85b65e1a8f4b44d071953c05411c1");
            Assert.IsFalse(h2a.Equals(h1a, StringComparison.OrdinalIgnoreCase));
        }
コード例 #2
0
        private bool CheckLogon()
        {
            if (trys++ > 2)
            {
                trys = 0;
                return(false);
            }
            Employee employee = new Employee();

            employee.Organization_no = PosSettings.Default.Organization;
            employee.Logon_no        = userno.ToString();
            employee.LoadByLogon();
            //if( employee.Logon_pass.Length == 0 )
            //{
            //	errorCode = PosErrorCode.BAD_USER;
            //	return false;
            //}

            if (MD5HashHelper.verifyMd5Hash(passno.ToString(), employee.Logon_pass))
            {
                employee.Relations();
                PosContext.Instance.Employee = employee;
                return(true);
            }
            else
            {
                errorCode = PosErrorCode.BAD_PASSWORD;
                return(false);
            }
        }
コード例 #3
0
        public void CheckForCachedDownloadNode(HttpResponse Response)
        {
            if (!hasDownloadNode)
            {
                return;
            }
            Response.ClearContent();
            string md5Hashnode35;

            md5Hashnode35        = MD5HashHelper.Hash(data);
            Response.ContentType = contentType;
            Response.AppendHeader("ETag", "\"" + md5Hashnode35 + "\"");
            Response.AppendHeader("Content-MD5", md5Hashnode35);
            Response.AppendHeader("Accept-Ranges", "none");
            if (saveOnDisk)
            {
                Response.AppendHeader("Content-Disposition", "attachment; filename=" + Regex.Replace(fileName, "^.*/|^.*\\\\|[^a-zA-Z0-9\\._\\-]", "", RegexOptions.Singleline));
            }
            else
            {
                Response.AppendHeader("Content-Disposition", "inline; filename=" + Regex.Replace(fileName, "^.*/|^.*\\\\|[^a-zA-Z0-9\\._\\-]", "", RegexOptions.Singleline));
            }
            if (data.Length > 0)
            {
                Response.BinaryWrite(data);
            }

            Response.End();
        }
コード例 #4
0
        protected virtual string SerializeViewState(object viewState, out string hash)
        {
            ObjectStateFormatter formatter = new ObjectStateFormatter();
            var vstate = formatter.Serialize(viewState);

            hash = MD5HashHelper.HashUsingDefaultEncoding(vstate ?? string.Empty);
            return(vstate);
        }
コード例 #5
0
        protected virtual object DeserializeViewState(string viewState, out string hash)
        {
            ObjectStateFormatter formatter = new ObjectStateFormatter();

            hash = MD5HashHelper.HashUsingDefaultEncoding(viewState ?? string.Empty);
            var result = formatter.Deserialize(viewState);

            return(result);
        }
コード例 #6
0
ファイル: User.cs プロジェクト: RavilIsrafilov/University
        public EncryptUser(int lenght)
        {
            this.lenght  = lenght;
            myRSA        = new RSA(lenght);
            hashHelper   = new MD5HashHelper();
            myRSAMethods = new RSAMethods(lenght);

            OpenKey  = myRSA.GetPublicKey();
            CloseKey = myRSA.GetCloseKey();
        }
コード例 #7
0
        private bool CheckLogon()
        {
            if (trys++ > 2)
            {
                trys = 0;
                return(false);
            }
            Employee employee = new Employee();

            employee.Logon_no        = PosContext.Instance.CurrentEmployee.Logon_no;
            employee.Organization_no = PosSettings.Default.Organization;
            employee.LoadByLogon();

            if (MD5HashHelper.verifyMd5Hash(passno.ToString(), employee.Logon_pass))
            {
                employee.Relations();
                PosContext.Instance.Employee = employee;
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #8
0
        /// <summary>
        /// Returns MD5 hash of filter expression
        /// </summary>
        /// <returns>MD5 hash of filter expression</returns>
        public string GetFilterHash()
        {
            var hash = MD5HashHelper.GetHash(new[] { First.GetFilterHash(), Second.GetFilterHash() });

            return(Utility.ByteArrayAsHexString(hash));
        }
コード例 #9
0
        /// <summary>
        /// Initialize list of modified files / folder for each volume
        /// </summary>
        /// <param name="emitFilter"></param>
        /// <param name="fileAttributeFilter"></param>
        /// <param name="skipFilesLargerThan"></param>
        /// <param name="prevJournalData"></param>
        /// <returns></returns>
        private Dictionary <string, VolumeData> Initialize(IFilter emitFilter, FileAttributes fileAttributeFilter, long skipFilesLargerThan,
                                                           IEnumerable <USNJournalDataEntry> prevJournalData)
        {
            if (prevJournalData == null)
            {
                throw new UsnJournalSoftFailureException(Strings.USNHelper.PreviousBackupNoInfo);
            }

            var result = new Dictionary <string, VolumeData>();

            // get hash identifying current source filter / sources configuration
            // ReSharper disable once PossibleMultipleEnumeration
            var configHash = Utility.Utility.ByteArrayAsHexString(MD5HashHelper.GetHash(new string[] {
                emitFilter == null ? string.Empty : emitFilter.ToString(),
                string.Join("; ", m_sources),
                fileAttributeFilter.ToString(),
                skipFilesLargerThan.ToString()
            }));

            // create lookup for journal data
            var journalDataDict = prevJournalData.ToDictionary(data => data.Volume);

            // iterate over volumes
            foreach (var sourcesPerVolume in SortByVolume(m_sources))
            {
                if (m_token.IsCancellationRequested)
                {
                    break;
                }

                var volume        = sourcesPerVolume.Key;
                var volumeSources = sourcesPerVolume.Value;
                var volumeData    = new VolumeData
                {
                    Volume      = volume,
                    JournalData = null
                };
                result[volume] = volumeData;

                try
                {
                    // prepare journal data entry to store with current fileset
                    var journal  = new USNJournal(volume);
                    var nextData = new USNJournalDataEntry
                    {
                        Volume     = volume,
                        JournalId  = journal.JournalId,
                        NextUsn    = journal.NextUsn,
                        ConfigHash = configHash
                    };

                    // add new data to result set
                    volumeData.JournalData = nextData;

                    // only use change journal if:
                    // - journal ID hasn't changed
                    // - nextUsn isn't zero (we use this as magic value to force a rescan)
                    // - the configuration (sources or filters) hasn't changed
                    if (!journalDataDict.TryGetValue(volume, out var prevData))
                    {
                        throw new UsnJournalSoftFailureException(Strings.USNHelper.PreviousBackupNoInfo);
                    }

                    if (prevData.JournalId != nextData.JournalId)
                    {
                        throw new UsnJournalSoftFailureException(Strings.USNHelper.JournalIdChanged);
                    }

                    if (prevData.NextUsn == 0)
                    {
                        throw new UsnJournalSoftFailureException(Strings.USNHelper.NextUsnZero);
                    }

                    if (prevData.ConfigHash != nextData.ConfigHash)
                    {
                        throw new UsnJournalSoftFailureException(Strings.USNHelper.ConfigHashChanged);
                    }

                    var changedFiles   = new HashSet <string>(Utility.Utility.ClientFilenameStringComparer);
                    var changedFolders = new HashSet <string>(Utility.Utility.ClientFilenameStringComparer);

                    // obtain changed files and folders, per volume
                    foreach (var source in volumeSources)
                    {
                        if (m_token.IsCancellationRequested)
                        {
                            break;
                        }

                        foreach (var entry in journal.GetChangedFileSystemEntries(source, prevData.NextUsn))
                        {
                            if (m_token.IsCancellationRequested)
                            {
                                break;
                            }

                            if (entry.Item2.HasFlag(USNJournal.EntryType.File))
                            {
                                changedFiles.Add(entry.Item1);
                            }
                            else
                            {
                                changedFolders.Add(Util.AppendDirSeparator(entry.Item1));
                            }
                        }
                    }

                    // At this point we have:
                    //  - a list of folders (changedFolders) that were possibly modified
                    //  - a list of files (changedFiles) that were possibly modified
                    //
                    // With this, we need still need to do the following:
                    //
                    // 1. Simplify the folder list, such that it only contains the parent-most entries
                    //     (eg. { "C:\A\B\", "C:\A\B\C\", "C:\A\B\D\E\" } => { "C:\A\B\" }
                    volumeData.Folders = Utility.Utility.SimplifyFolderList(changedFolders).ToList();

                    // 2. Our list of files may contain entries inside one of the simplified folders (from step 1., above).
                    //    Since that folder is going to be fully scanned, those files can be removed.
                    //    Note: it would be wrong to use the result from step 2. as the folder list! The entries removed
                    //          between 1. and 2. are *excluded* folders, and files below them are to be *excluded*, too.
                    volumeData.Files =
                        new HashSet <string>(Utility.Utility.GetFilesNotInFolders(changedFiles, volumeData.Folders));

                    // Record success for volume
                    volumeData.IsFullScan = false;
                }
                catch (Exception e)
                {
                    // full scan is required this time (eg. due to missing journal entries)
                    volumeData.Exception  = e;
                    volumeData.IsFullScan = true;
                    volumeData.Folders    = new List <string>();
                    volumeData.Files      = new HashSet <string>();

                    // use original sources
                    foreach (var path in volumeSources)
                    {
                        var isFolder = path.EndsWith(Util.DirectorySeparatorString, StringComparison.Ordinal);
                        if (isFolder)
                        {
                            volumeData.Folders.Add(path);
                        }
                        else
                        {
                            volumeData.Files.Add(path);
                        }
                    }
                }
            }

            return(result);
        }