Я пытаюсь подписать строку, используя библиотеку BouncyCastle. Мой код работает, но результирующая строка полна странных символов, и мое чутье подсказывает, что с ней что-то не так. Мой код выглядит так
Security.addProvider(new BouncyCastleProvider());
FileReader fileReader = new FileReader(new File("certs/private.pem"));
PEMReader r = new PEMReader(fileReader);
PrivateKey privateKey = (PrivateKey) r.readObject();
r.close()
String toSign = "hello world";
Signature signature = Signature.getInstance("SHA1withRSA","BC");
signature.initSign(privateKey);
signature.update(toSign.getBytes("UTF-8"));
byte[] signedArray = signature.sign();
String signedString = new String(signedArray, "UTF-8");
И результирующая строка (signedString) выглядит (ужасно) так:
������jc.������c�1�#�ٶ����E8����a��f8���t�~W�{%��\Z#�� it��ҽ;�n��k�n{U>&�d�_���&�?�N��g� z\�k�g���e~�S4�ƎG�g ��U�:��s>i�%YL�n3�����Y��9����T���}�Usb���&�����eշѾUr�Y�ڝ[ j�h~mu\3U��j���c�U�ac����t��No-��1J�B]�
Приватный.pem был создан с помощью этой команды
openssl req -new -x509 -days 3652 -nodes -out private.crt -keyout private.pem.
Любая помощь или подсказка будут очень признательны.
РЕШЕНО
Что я сделал, так это закодировал массив байтов в Base64, используя эту строку
byte[] encodedArray = org.bouncycastle.util.encoders.Base64.encode(signedArray);
и вуала!