0

我有这个字符串,我必须用证书和 .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);

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

4

1 回答 1

0

结果证明编码和签名是正确的,但是它返回了一个不应该存在的“\r\n”。所需要的只是摆脱它以使其正常工作。

于 2013-02-06T21:55:53.910 回答