Jump to content

Recommended Posts

Posted

Since I wasn't able to find it anywhere on the net I decided to make it myself.

For whoever needs it in the future :)

 

   private static byte[] Encrypt(string password)
   {
    var key = new byte[16];
       long one, two, three, four;
       var dst = new byte[16];
       var nBytes = password.Length;

       for (var i = 0; i < nBytes; i++ )
       {
           key[i] = Encoding.ASCII.GetBytes(password.Substring(i, 1))[0];
           dst[i] = key[i];
       }

    long rslt  = @key[0] + @key[1]*256 + @key[2]*65536 + @key[3]*16777216;
    one = rslt * 213119 + 2529077;
       one = one - ToInt32(one / 4294967296) * 4294967296;

    rslt  = @key[4] + @key[5]*256 + @key[6]*65536 + @key[7]*16777216;
       two = rslt * 213247 + 2529089;
       two = two - ToInt32(two / 4294967296) * 4294967296;

    rslt  = @key[8] + @key[9]*256 + @key[10]*65536 + @key[11]*16777216;
       three = rslt * 213203 + 2529589;
       three = three - ToInt32(three / 4294967296) * 4294967296;

    rslt  = @key[12] + @key[13]*256 + @key[14]*65536 + @key[15]*16777216;
       four = rslt * 213821 + 2529997;
       four = four - ToInt32(four / 4294967296) * 4294967296;

       key[3] = ParseInt(one / 16777216);
       key[2] = ParseInt((((Int32)(one - @key[3] * 16777216)) / 65535));
       key[1] = ParseInt((one - @key[3] * 16777216 - @key[2] * 65536) / 256);
       key[0] = ParseInt((one - @key[3] * 16777216 - @key[2] * 65536 - @key[1] * 256));

       key[7] = ParseInt(two / 16777216);
       key[6] = ParseInt((two - @key[7] * 16777216) / 65535);
       key[5] = ParseInt((two - @key[7] * 16777216 - @key[6] * 65536) / 256);
       key[4] = ParseInt((two - @key[7] * 16777216 - @key[6] * 65536 - @key[5] * 256));

       key[11] = ParseInt(three / 16777216);
       key[10] = ParseInt((three - @key[11] * 16777216) / 65535);
       key[9] = ParseInt((three - @key[11] * 16777216 - @key[10] * 65536) / 256);
       key[8] = ParseInt((three - @key[11] * 16777216 - @key[10] * 65536 - @key[9] * 256));

       key[15] = ParseInt(four / 16777216);
       key[14] = ParseInt((four - @key[15] * 16777216) / 65535);
       key[13] = ParseInt((four - @key[15] * 16777216 - @key[14] * 65536) / 256);
       key[12] = ParseInt((four - @key[15] * 16777216 - @key[14] * 65536 - @key[13] * 256));

       dst[0] = ParseInt(dst[0] ^ @key[0]);

       for (var i = 1; i < dst.Length; i++)
           dst[i] = ParseInt(@dst[i] ^ @dst[i - 1] ^ @key[i]);

       for (var i = 0; i < dst.Length; i++)
           if (dst[i] == 0)
               dst[i] = 102;
               
return dst;
   }

   private static int ToInt32(long val)
   {
       return Convert.ToInt32(val);
   }
   
   private static byte ParseInt(long val)
   {
       return BitConverter.GetBytes(val)[0];
   }

Posted

It's a simple conversion of every single registration script in asp/php's encryption method for storing passwords when users register.

 

Infact it's scarily alot of copy paste, just wit a few changes to C#/.NET syntax.

 

Not quite sure how it's useful, if you can't do this you wouldn't mess with it in the first place.

Posted

in English please?  ;D

That was English.

 

A side note, this hashing algorithm is notoriously insecure, and has an incredibly alarming collision rate.

You should use hAuthD and enable hint's custom md5 password encryption, which is a hell of a lot more secure.

Posted

That was English.

 

A side note, this hashing algorithm is notoriously insecure, and has an incredibly alarming collision rate.

You should use hAuthD and enable hint's custom md5 password encryption, which is a hell of a lot more secure.

 

U MAD?! U NO LIKE BRUT FOUS?!

Posted

.... what a big fuzz for nothing

Thanks for sharing your awesomeness Anders

 

If you can improve the algorithm just do so and share it?

C# is widely used to create web applications so it's not strange I'm sharing this at all.

Posted

.... what a big fuzz for nothing

Thanks for sharing your awesomeness Anders

 

If you can improve the algorithm just do so and share it?

C# is widely used to create web applications so it's not strange I'm sharing this at all.

 

Do you even know how the system of authentication works together with the first registration of a users information?

In general how authentication processes has to be tied with the user info it has from whatever previous source?

 

It sounds like you don't.

Posted

Great for pointing out that you do know how it works.

Thanks for contributing it to this topic. Really useful information.

 

Just like your fantastic useful information of saving people 3 minutes with this.

 

Lets forget the fact that'd Anarchy pointed out how crap and weak the "hash" if you can call it that is, in l2.

Not me.

 

Using a new hash, you can google for it.

Am i awesome for posting a SHA2 or ever SHA1 hash copy pasted from somewhere?

Won't really help when no authentication process known in L2 supports it, will it? ;)

 

Your a kid who's butthurt over not getting praise, but instead someone saying what you share is pretty much already shared, in another script/language.

Which is what i did - FYI - not insult you in anyway.

 

Stay in school kiddo :O

Posted

That was English.

 

A side note, this hashing algorithm is notoriously insecure, and has an incredibly alarming collision rate.

You should use hAuthD and enable hint's custom md5 password encryption, which is a hell of a lot more secure.

I think he meant he did not understand it

Posted

You must be really awesome that you can fix it in 3minutes. Thanks for pointing out how awesome you are again.

Still..  I don't really care what your opinion is about the "hash". Just shared it to I can save Anders 3min :)

(PS: I'm glad I'm still studying. Someone as awesome as you doesn't need school ;))

  • 2 weeks later...
Posted

There u go hCrypt in C#.

        using System;

       private const string MD5Password = "key";
       private static string hCrypt(string password)
       {
           var md5Password = MD5Password.ToCharArray();
           var s = (EncryptMD5(password) + EncryptMD5(MD5Password)).ToCharArray();
           int j = 0;
        for (var i = 0; i < s.Length; i++)
        {
               if (j >= MD5Password.Length) j = 0;

               var calcu = s[i] ^ md5Password[j];
            s[i] = (char)calcu;
	        j++;
        }
           return EncryptMD5(new string(s));
       }


       public static string EncryptMD5(string originalPassword)
       {
           return BitConverter.ToString(((new MD5CryptoServiceProvider()).ComputeHash(Encoding.UTF8.GetBytes(originalPassword)))).Replace("-", "").ToLower();
       }

Posted

There u go hCrypt in C#.

        private const string MD5Password = "key";
        private static string hCrypt(string password)
        {
            var md5Password = MD5Password.ToCharArray();
            var s = (EncryptMD5(password) + EncryptMD5(MD5Password)).ToCharArray();
            int j = 0;
        for (var i = 0; i < s.Length; i++)
        {
                if (j >= MD5Password.Length) j = 0;

                var calcu = s[i] ^ md5Password[j];
            s[i] = (char)calcu;
	        j++;
        }
            return EncryptMD5(new string(s));
        }


        public static string EncryptMD5(string originalPassword)
        {
            return BitConverter.ToString(((new MD5CryptoServiceProvider()).ComputeHash(Encoding.UTF8.GetBytes(originalPassword)))).Replace("-", "").ToLower();
        }

is seems good but look the first lines :S fix it!!!
  • Vision changed the title to C# L2Off Password encryption

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...