MD5 шифрование из .net в Java - PullRequest
       5

MD5 шифрование из .net в Java

0 голосов
/ 07 декабря 2018

Я хочу попробовать шифрование MD5 в Java.На самом деле у меня есть код .net, который делает шифрование md5.Код был написан много лет назад.Мне нужно преобразовать этот код в Java, который производит точно такой же вывод.Прежде всего, мне нужно понять, есть ли здесь какая-то логика или она просто перемешивает вещи, чтобы получить уникальный результат.Я хочу понять, что на самом деле делает здесь, и тогда, возможно, я смогу найти лучшее простое решение.Можете ли вы проанализировать код, что на самом деле делает здесь?

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Enter text to encrypt:");
        string md5String = Console.ReadLine();            

        string encryptedString = method2(method1(md5String));
        Console.WriteLine(encryptedString);            
        Console.ReadLine();
    }        

    public static string method2(string text)
    {
        MD5CryptoServiceProvider mD5CryptoServiceProvider = new MD5CryptoServiceProvider();
        byte[] array = mD5CryptoServiceProvider.ComputeHash(Encoding.GetEncoding(1254).GetBytes(text));
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < array.Length; i++)
        {
            stringBuilder.Append(array[i].ToString("x2").ToUpper());
        }
        return stringBuilder.ToString();
    }

    public static string method1(string x)
    {
        int num = 20;
        try
        {
            string text = string.Concat(new string[]
            {
        's'.ToString(),
        'e'.ToString(),
        '3'.ToString(),
        'x'.ToString(),
        '4'.ToString()
            });
            string text2 = x.ToUpper();
            text = text + '2'.ToString() + 'g'.ToString() + 'p'.ToString();
            string text3 = text.ToUpper();
            int num2 = 1;
            byte[] bytes = Encoding.GetEncoding(1254).GetBytes(text2);
            byte[] array = bytes;
            int num3;
            for (int i = 0; i < array.Length; i++)
            {
                byte b = array[i];
                num3 = (int)b;
                if (num3 < 65 | num3 > 90)
                {
                    num3 = 65 + num3 % 24;
                    text2 = text2.Substring(0, num2 - 1) + ((char)num3).ToString() + text2.Substring(num2);
                }
                num2++;
            }
            num2 = 1;
            bytes = Encoding.GetEncoding(1254).GetBytes(text3);
            byte[] array2 = bytes;
            for (int j = 0; j < array2.Length; j++)
            {
                byte b2 = array2[j];
                num3 = (int)b2;
                if (num3 < 65 | num3 > 90)
                {
                    num3 = 65 + num3 % 24;
                    text3 = text3.Substring(0, num2 - 1) + ((char)num3).ToString() + text3.Substring(num2);
                }
                num2++;
            }
            int num4 = (int)Encoding.GetEncoding(1254).GetBytes(text2)[0];
            int num5 = (int)Encoding.GetEncoding(1254).GetBytes(text3)[text3.Length - 1];
            num3 = (int)Encoding.GetEncoding(1254).GetBytes(text2)[text2.Length - 1];
            num3 %= 13;
            string text4 = text2 + text3;
            int num6 = 1;
            int num7 = 1;
            while (num7 <= num && text4.Length < num)
            {
                num3 = num3 + num4 + num7;
                if (num3 > 90)
                {
                    num3 %= 24;
                    num3 += 65;
                }
                string text5 = ((char)num3).ToString();
                if (num6 == 1)
                {
                    text4 += text5;
                    num6 = 0;
                }
                else
                {
                    text4 = text5 + text4;
                    num6 = 1;
                }
                num7++;
            }
            num2 = 1;
            bytes = Encoding.GetEncoding(1254).GetBytes(text4);
            byte[] array3 = bytes;
            for (int k = 0; k < array3.Length; k++)
            {
                byte b3 = array3[k];
                num3 = (int)b3;
                num3 = num3 + num5 + num2;
                if (num3 > 90)
                {
                    num3 %= 24;
                    num3 += 65;
                }
                text4 = text4.Substring(0, num2 - 1) + ((char)num3).ToString() + text4.Substring(num2);
                if (num2 >= num)
                {
                    break;
                }
                num2++;
            }
            return text4;
        }
        catch (Exception)
        {
        }
        return "";

    }
}

/****** EXAMPLE ******/
Enter text to encrypt:123456
8A5278DAF28D3F0AE9519AA7F17FA863
/****** EXAMPLE ******/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...