Я бы посоветовал вам разобраться с этим.
1 - Сравните, что вы получаете от Java String.getBytes () и .NET Encoding.GetBytes ()
Вот некоторый код .NET, который будет выгружать байты для вашей строки для каждой кодировки, сравнить результаты с результатами из Java.
string myInput = "test1234";
foreach (EncodingInfo ei in Encoding.GetEncodings())
{
byte[] bytes = ei.GetEncoding().GetBytes(myInput);
Console.WriteLine("{0}\t\t{1}",
BitConverter.ToString(bytes), ei.DisplayName);
}
2- Если вы найдете правильную кодировку из шага 1, перейдите к следующему шагу. Сравните хэши SHA1 для тех же байтов в Java и .NET. Это должно соответствовать, но мне нравится быть методичным и никогда не делать предположений, особенно когда их легко и быстро проверить.
3 - После того, как вы показали, что у вас одинаковые байты SHA1, вы можете выполнить кодирование Base 64 и сравнить.
4- Наконец, выполните кодировку Url, если вы зашли так далеко, я подозреваю, что вы найдете разницу в регистре. IIRC .NET Url-кодирование использует нижний регистр, и из вашего примера я вижу, что Java использует верхний регистр, например% 3D в Java, вероятно, будет% 3d в .NET.