Saya mencoba menandatangani string menggunakan perpustakaan BouncyCastle. Kode saya berfungsi, tetapi string yang dihasilkan penuh dengan karakter aneh dan naluri saya mengatakan ada yang salah dengan kode tersebut. Kode saya terlihat seperti ini
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");
Dan string yang dihasilkan (signedString) terlihat (sangat buruk) seperti ini:
�����jc.������c�1�#�ٶ����E8����a��f8���t�~W�{%��\Z#�� itu����;�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��Tidak-��1J�B]�
Private.pem dibuat dengan perintah ini
openssl req -new -x509 -days 3652 -nodes -out private.crt -keyout private.pem.
Bantuan atau petunjuk apa pun akan sangat dihargai.
SELESAI
Apa yang saya lakukan adalah menyandikan array de byte ke Base64 menggunakan baris ini
byte[] encodedArray = org.bouncycastle.util.encoders.Base64.encode(signedArray);
dan voala!