Member 13150761 Ответов: 1

Логика Check sum совместима с C# и java.


I am using c# code to compute the checksum.

I am using crc32 dll.

i need to send the checksum value to another application, they are using JAVA.

they are also using the same crc32 algorithem.

My c# code below.

<pre>  Crc32 achk = new Crc32();

байт[] байт = система.Текст.Кодирование.Кодировке utf8.GetBytes("6210/25042017164248|Srikanth|123456|R|123456789|123456789|100|test|10|srikanth|8019412555|||Srikanth");
ачк.Обновление (байт);


Мое значение: 4140400987

с их конца значение равно: 355590133

пожалуйста, предложите код, который совместим как для c#, так и для java.




Что я уже пробовал:

check sum logic compatible for c# and java.

Tomas Takac

Возможно, они используют другое семя.

Member 13150761

Они используют одно и то же семя.

Richard Deeming

Может быть, они используют другую кодировку?

1 Ответов

Рейтинг:
1

Jochen Arndt

CRC основаны на полиномиальных значениях, которые могут быть разными (см. Циклический избыточный код - Википедия[^]).

Таким образом, вы должны использовать одни и те же полиномиальные значения с одинаковым порядком битов для ваших вычислений C# и Java.

Исходники Java можно найти здесь: Исходным кодом для Java.утиль.молния.CRC32 в (документации GNU classpath, который 0.95 )[^]. Он основан на RFC 1952[^]. В соответствии с ними используется полиноимальный 0xedb88320.

Таким образом, вы должны убедиться, что вычисление C# использует то же самое. Проверьте документацию используемой библиотеки DLL (или исходный код, если таковой имеется). Если полином не может быть указан, вам придется использовать другую библиотеку DLL или написать свою собственную (например, путем преобразования кода Java в C#).