Feedback

C# - HashableElement

Veröffentlicht von am 31.01.2008
(1 Bewertungen)
Hier mal ne kleine Klasse die als Denkanstoß dienen soll wie man eine klasse hashen kann,
mit Hilfe des MD5Ignore Attributes kann man einfach die Property aus der Hashwerterstellung rausnehmen.
Exemplarisch wird hier die Version aus der Hasherstellung rausgenommen.
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Security.Cryptography;

namespace DotNetSnippets
{
    internal class MD5Ignore : System.Attribute
    {
    }
    
    internal class HashableElement
    {
        private Guid id;
        private DateTime creation;
        private string user;
        private string currentValue;
        private Version version;

        public HashableElement()
        {

        }
        /// <summary>
        /// Beschreibung: 
        /// </summary>
        [MD5Ignore]
        public Version Version
        {
            get
            {
                return version;
            }
            set
            {
                version = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public string Value
        {
            get
            {
                return currentValue;
            }
            set
            {
                currentValue = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public string User
        {
            get
            {
                return user;
            }
            set
            {
                user = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public DateTime Creation
        {
            get
            {
                return creation;
            }
            set
            {
                creation = value;
            }
        }
	

        /// <summary>
        /// Beschreibung: 
        /// </summary>
        public Guid Id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }

        internal string GetCheckSum()
        {
            List<PropertyInfo> properties = new List<PropertyInfo>(this.GetType().GetProperties());
            List<PropertyInfo> validProperties = new List<PropertyInfo>(properties.FindAll(delegate(PropertyInfo any)
            {
                return (any.GetCustomAttributes(typeof(MD5Ignore), true).Length == 0);
            }));
            string checkSumBase = string.Empty;
            foreach (PropertyInfo pInfo in validProperties)
            {
                checkSumBase += String.Format("{0} / ",pInfo.GetValue(this, null).ToString());
            }



            byte[] data = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(checkSumBase));

            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            return sBuilder.ToString();
      
         

        }

        private string GetMd5Salt()
        {
            return "exampleSalt";
        }
	
    }
}

Abgelegt unter MD5, Checksum, ComputeHash, Attribute.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!