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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Where's the proof? I can tell you're a scammer.
    • Where was I called a scammer? Is there any proof, etc.? There are a lot of reviews about our store online, etc. https://zhyk.org/forum/showthread.php?t=1108673
    • U was reported as scammer in your previos topic why u create new topic?
    • 🔍 Inventory 1.0 is a next-generation inventory system that stands out with its special minimal clothing system. Carefully designed and prepared according to the highest standards of your server, it not only enhances your gaming experience but also contributes to your server's infrastructure. ⚙️ Supported: QB-CORE Features: ✅ Instant Delivery: All products you purchase will be instantly assigned to your account as soon as your payment is completed. ✅ Clothing System: With the special animated clothing configurations in your inventory, you will be able to change outfits with ease. Experience a unique roleplaying experience with high-quality animations and customizable clothing options. ✅ Minimalist Inventory System: This inventory system, with its visuals, animations, and mechanics, offers maximum efficiency without overwhelming your screen and limiting your roleplaying experience. It’s designed to be user-friendly while enhancing your roleplaying experience. ✅ Continuous Updates: The content in the inventory is regularly updated with innovative features added. New animations, additional clothing options, and cutting-edge features ensure a fresh and dynamic experience. ✅ Easy Setup and Compatibility: Compatible with QB-CORE, this system is easy to install and optimized for quick integration into your server. It works seamlessly with a simple drag-and-drop method. ✅ Performance Optimization: The system is optimized to avoid low FPS and performance drops. All features of the inventory run smoothly without affecting your server’s performance. ✅ Multilingual Support: With support for different languages, you can cater to an international player base and build a larger community on your server. ✅ Flexible Customization Options: You can fully customize the inventory according to your needs and server rules. Choose between different outfits and animations to create a unique gaming experience. ✅ Comprehensive Help and Support: With 24/7 support, you can quickly resolve any issues you encounter. Our technical support and user guides are always here to assist you. Shop Now! Take your game to the next level with Inventory 1.0  and enjoy its unique features. Get ready to make a real difference in your roleplaying experience!   --------------------------TEBEX: https://matza.tebex.io/package/7174862 --------------------------
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock