Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Muszę przenieść ten kod do javy !


Rekomendowane odpowiedzi

Opublikowano
private static string JavaHexDigest(string data)
        {
            var sha1 = SHA1.Create();
            byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(data));
            bool negative = (hash[0] & 0x80) == 0x80;
            if (negative) // check for negative hashes
                hash = TwosCompliment(hash);
            // Create the string and trim away the zeroes
            string digest = GetHexString(hash).TrimStart('0');
            if (negative)
                digest = "-" + digest;
            return digest;
        }
 
        private static string GetHexString(byte[] p)
        {
            string result = "";
            for (int i = 0; i < p.Length; i++)
            {
                if (p[i] < 0x10)
                    result += "0";
                result += p[i].ToString("x"); // Converts to hex string
            }
            return result;
        }
        private static byte[] TwosCompliment(byte[] p) // little endian
        {
            int i;
            bool carry = true;
            for (i = p.Length - 1; i >= 0; i--)
            {
                p[i] = (byte)~p[i];
                if (carry)
                {
                    carry = p[i] == 0xFF;
                    p[i]++;
                }
            }
            return p;
        }

 

Jak w temacie :) Podołasz wyzywaniu ?

Opublikowano

 

private static string JavaHexDigest(string data)
        {
            var sha1 = SHA1.Create();
            byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(data));
            bool negative = (hash[0] & 0x80) == 0x80;
            if (negative) // check for negative hashes
                hash = TwosCompliment(hash);
            // Create the string and trim away the zeroes
            string digest = GetHexString(hash).TrimStart('0');
            if (negative)
                digest = "-" + digest;
            return digest;
        }
 
        private static string GetHexString(byte[] p)
        {
            string result = "";
            for (int i = 0; i < p.Length; i++)
            {
                if (p[i] < 0x10)
                    result += "0";
                result += p[i].ToString("x"); // Converts to hex string
            }
            return result;
        }
        private static byte[] TwosCompliment(byte[] p) // little endian
        {
            int i;
            bool carry = true;
            for (i = p.Length - 1; i >= 0; i--)
            {
                p[i] = (byte)~p[i];
                if (carry)
                {
                    carry = p[i] == 0xFF;
                    p[i]++;
                }
            }
            return p;
        }

 

Jak w temacie :) Podołasz wyzywaniu ?

 

 

Flaszka i mozemy gadac.

Opublikowano
private static String convToHex(byte[] data) {//ten
StringBuilder buf = new StringBuilder();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
    buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}

private static String byteArray2Hex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash) {
formatter.format("%02x", ;
}
return formatter.toString();
}
public static String SHA1(String text) throws NoSuchAlgorithmException,
UnsupportedEncodingException {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
sha1hash = md.digest();
return convToHex(sha1hash);
//lub
return byteArray2Hex(sha1hash);
}

 

Nwm dokładnie co chcesz osiągnąć. I po co ci to jest.

Opublikowano

Tam mam string, a nie byte[] , a po przekonwertowaniu string.getBytes() to na testowym wyrazie wychodzi:

4e6f746368

a powinno:

4ed1f46bbe04bc756bcb17c0c7ce3e4632f06a48

 

A jest mi to potrzebne do serwera pewnej gry ... minecraft gdzie dzięki temu hashowaniu odbywa się autoryzacja, potem znając nick i zahashowany serverID możemy sprawdzić czy użytkownik to gracz z oryginalną grą, czy nie. http://wiki.vg/Protocol_Encryption

 

Ale mimo wszystko wielkie dzięki, może to sam rozkminię :D Teraz mam przynajmniej nad czym pracować.

Opublikowano

Tam mam string, a nie byte[] , a po przekonwertowaniu string.getBytes() to na testowym wyrazie wychodzi:

4e6f746368

a powinno:

4ed1f46bbe04bc756bcb17c0c7ce3e4632f06a48

 

A jest mi to potrzebne do serwera pewnej gry ... minecraft gdzie dzięki temu hashowaniu odbywa się autoryzacja, potem znając nick i zahashowany serverID możemy sprawdzić czy użytkownik to gracz z oryginalną grą, czy nie. http://wiki.vg/Protocol_Encryption

 

Ale mimo wszystko wielkie dzięki, może to sam rozkminię :D Teraz mam przynajmniej nad czym pracować.

 

Ehhh .... ja już myślałem że jestem taki głupi

 

Przecież złą metode wywołujesz baranie xD SHA1 a nie convert to hex pomyśl troszeczke. Widzę że nie wiesz co robisz :s

Opublikowano

 

Ehhh .... ja już myślałem że jestem taki głupi

 

Przecież złą metode wywołujesz baranie xD SHA1 a nie convert to hex pomyśl troszeczke. Widzę że nie wiesz co robisz :s

O BOŻE. OH GOD Ale ze mnie idiota. Ale fail. Człowieku, jesteś zajebisty, powiadam ci iż zajebisty jesteś. Limit like ode mnie i 5 w profilku.

 

ALE ZE MNIE BARAN.

 

@edit limit poszedł :D

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...