Java 对Base64中使用SHA1RSA签名的UTF-8字符串进行编码,但未获得正确的结果

Java 对Base64中使用SHA1RSA签名的UTF-8字符串进行编码,但未获得正确的结果,java,base64,rsa,sha1,Java,Base64,Rsa,Sha1,我有这个字符串,我必须用证书和.key文件签名。我从来没有遇到过任何问题,直到字符串包含拉丁字符(ñ、é、í等)。字符串转换为UTF-8,然后使用SHA1RSA算法签名,以Base64编码结束。然而,签名给了我一个奇怪的答案,Base64编码以错误的格式结束 cadena = "||3.2|2013-01-25T17:24:00|ingreso|PAGO EN UNA SOLA EXHIBICION|6386.21|MXN|7408.00|No identificado|NAUCALPAN DE

我有这个字符串,我必须用证书和.key文件签名。我从来没有遇到过任何问题,直到字符串包含拉丁字符(ñ、é、í等)。字符串转换为UTF-8,然后使用SHA1RSA算法签名,以Base64编码结束。然而,签名给了我一个奇怪的答案,Base64编码以错误的格式结束

cadena = "||3.2|2013-01-25T17:24:00|ingreso|PAGO EN UNA SOLA EXHIBICION|6386.21|MXN|7408.00|No identificado|NAUCALPAN DE JUÁREZ, ESTADO DE MEXICO|CAOS640116HT5|OSCAR MARTIN CARRERA|CTO. ORADORES 33|33|CD. SATELITE|NAUCALPAN DE JUÁREZ|ESTADO DE MEXICO|MÉXICO|53100|CTO. ORADORES 33|33|CD. SATELITE|NAUCALPAN DE JUÁREZ|ESTADO DE MEXICO|MÉXICO|53100|Persona Física con Actividad Empresarial|BAÑ930616R66|BAÑOMOBIL, S.A. DE C.V.|Av. 1° de Mayo|197|San. Lorenzo|TLALNEPANTLA DE BAZ|ESTADO DE MEXICO|MÉXICO|54047|1|NO APLICA|Dominio .com|Dominio por 1 año www.sanitariosportatiles.com|586.21|586.21|1|NO APLICA|Hospedaje 2 Gb|Hospedaje 2 Gb por 1 año www.sanitariosportatiles.com|5800.00|5800.00|IVA|16.00|1021.79|1021.79||";
Signature rsa = Signature.getInstance("SHA1withRSA");
rsa.initSign(pk);

rsa.update(cadena.getBytes("UTF-8"));
signature = rsa.sign();
sello = Base64.encodeBase64String(signature);

我忽略了获取密钥和证书,因为此过程使用的字符串没有这些字符

结果表明编码和签名是正确的,但是它返回了一个不应该出现的“\r\n”。它所做的一切就是摆脱它,使其正常工作。

您如何确定结果是错误的?当我尝试打印签名时,它会打印jibberish字符。Base64需要A-Z 0-9+/-我想。我使用它来使用Web服务,它返回一个错误,指出签名中有无效字符。如果我去掉(á,ñ,é)字符,它可以正常工作,但我需要这些字符才能使其有效。假设未显示的base64类是合理的,那么您显示的代码将只发送base64字符。因此,您提供的代码不是问题的根源。编辑器和编译器必须使用相同的编码。如果是这样的话,解码端一定是错的。