Kodowanie ciągu znaków do liczby szesnastkowej

Witam!

Czy zna może ktoś jakiś algorytm, który zakoduje mi ciąg znaków (o różnej długości) do postaci liczby szesnastkowej o ograniczonej długości znaków. Kodowanie ma być w jedną stronę, tzn. bez konieczności odzyskiwania zakodowanej wartości.

Dla przykładu:

jako string podaje “Jakis przykładowy napis”, co po zakodowaniu daje mi liczbę szesnastkową o max. 7 znakach.

Może to przez to, że jest późno, ale liczby szesnastkowe o nieparzystej liczbie znaków wydają mi się jakieś takie egzotyczne.

Jak rozumiem szukasz jakiejś funkcji skrótu, jak np. CRC

Ale ja bym jednak proponował nie kombinować i użyć MD5. Sądzę, że najprościej i najlepiej.

No, chyba, że nie możesz tego użyć. Po co Ci to w ogóle? Chcesz w bazie danych przechowywać zahashowane hasła użytkowników, a w trakcie logowaniu porównywać przy użyciu tej funkcji?

Witam!

Sprawa dotyczy Adobe Flash. Jeśli chcesz do niego dodać pliki helpa to m. in. musisz mieć 2 pliczki: InlelliSense i help.map. Ten pierwszy to plik xml, w którym każdy element (klasa, metoda, atrybut…) reprezentowany jest przez node zawierającą atrybut helpid. Ów jest liczbą dziesiętną (narazie wpisywaną na sztywno) inkrementowaną dla każdego elementu helpa. W pliku help.map wpisywana jest ta liczba zapisana w systemie szesnastkowym i na początku doklejany jest przedrostek “x2”, a obok niej scieżka do pliky helpa (html) w którym znajduje się pomoc do wybranego przez nas elementu. Myk polega na tym, żeby nie duplikować tych liczb szesnastkowych w różnych helpach do API we Flash-u, bo spowodować to może złe odsyłanie do plików helpa. Metodą empiryczną wyumkałem, że ta liczba szesnastkowa może mieć max. 7 znaków hex.

Znalazłem jakieś snippety kodu w Javie gdzie String hashowany jest przy pomocy MD5, lecz niestety nie można zdefiniować długości wyjściowego hasha.

To chyba nic dziwnego, MD5 ma to do siebie, że jest 128 bitowy.

A nie myślałeś, żeby wygenerowany przez taki snippet hash zwyczajnie przyciąć do określonej długości?

Poza tym - czy to w ogóle musi być hash? Nie wystarczy jakiś losowy ciąg znaków?

Losowy ciąg znaków raczej się nie nadaje, bo możemy losowo wygenerować takie same ciągi znaków dla różnych elementów helpa. Jeśli chodzi o obcinanie to chyba najlepiej wygenerować CRC32 który jest szesnastkowo 8-znakowy i wywalić MSP albo LSP.

Możemy. Możemy także być sprytni i się przed tym zabezpieczyć :slight_smile:

Też można. Można także wygenerować GUIDa i go obciąć.

Możliwości jest wiele, wybierz tą, którą najłatwiej Ci zaimplementować.