Поскольку вы не показываете свою точку C #, я могу только догадываться, в чем заключается ваша проблема:
В Java вы делаете двойной хэш MD5.Однажды явно в вашем коде, и однажды неявно в вашем Signature
объекте (который, как вы можете видеть, определен как MD5WithRSA
).Таким образом, у вас есть здесь
signatureJava = RSA(MD5(MD5(msg)))
Если вы не сделаете этот первый MD5 явно на стороне C #, вы получите:
signatureC# = RSA(MD5(msg))
Очевидно, что это не то же самое, еслидостигли точки фиксации MD5 с вашим сообщением (очень маловероятно).
Кроме этого, вы уверены, что подпись C # всегда одинакова?Как я понимаю, сигнатура RSA ( в обычно используемых режимах ) не является детерминированной, поскольку она включает в себя некоторые случайные данные заполнения.