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 に答える