Добрый день!
Составил программу, вытаскивающую из сертификата электронной подписи серийный номер
import java.io.*;
import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.cert.CertificateFactory;
import javax.security.cert.X509Certificate;
import javax.xml.bind.DatatypeConverter;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public File folderN = new File("C:\\TEST\\CER\\");
private FileOutputStream outputStream;
private void Run() {
try {
outputStream = new FileOutputStream(folderN + "\\result.txt");
} catch (Exception e) {
System.out.println("Не удалось открыть на запись файл с результатами");
return;
}
String[] files = folderN.list(new FilenameFilter() {
@Override public boolean accept(File folder, String name) {
return name.endsWith(".cer");
}
});
for ( String fileName : files ) {
System.out.println("File: " + folderN + "\\" + fileName);
ProcessFile(folderN + "\\" + fileName);
}
try {
outputStream.close();
} catch (Exception e) {
System.out.println("Не удалось сохранить результат");
}
}
public static String toHexadecimal(String text) throws UnsupportedEncodingException
{
byte[] myBytes = text.getBytes("UTF-8");
return DatatypeConverter.printHexBinary(myBytes);
}
private void ProcessFile(String filename)
{
try {
FileInputStream is = new FileInputStream(new File(filename));
CertificateFactory cf = CertificateFactory.getInstance("X.509");
java.security.cert.Certificate cert = cf.generateCertificate(is);
java.security.cert.X509Certificate t = (java.security.cert.X509Certificate) cert;
outputStream.write(filename.getBytes());
outputStream.write('\t');
String serial = new String (t.getSerialNumber().toString());
System.out.println(serial);
outputStream.write(serial.getBytes());
outputStream.write('\t');
} catch (Exception e) {
System.out.println("Перехвачено исключение");
}
}
public static void main(String[] args) {
Main M = new Main();
M.Run();
}
}
getSerialNumber() имеет тип данных BigInteger и выводит длинное число в десятеричной системе. Мне нужно получить данные в 16-разрядной системе. Подскажите, как можно решить эту задачу?