Java 如何将.cer文件加载和修改到内存中

Java 如何将.cer文件加载和修改到内存中,java,x509certificate,Java,X509certificate,以下代码将test.cer文件(即X509证书)加载到内存中。当它现在在内存中时,可以修改它的字段吗?输出任何字段都很容易,例如load.getPublicKey(),但我想更改公钥的第一个字节,并在更改后再次输出它。我该怎么做 File f= new File("Users/Desktop/JavaFolder/test.cer"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); BufferedInp

以下代码将test.cer文件(即X509证书)加载到内存中。当它现在在内存中时,可以修改它的字段吗?输出任何字段都很容易,例如
load.getPublicKey()
,但我想更改公钥的第一个字节,并在更改后再次输出它。我该怎么做

File f= new File("Users/Desktop/JavaFolder/test.cer");    
CertificateFactory cf = CertificateFactory.getInstance("X.509");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
while (in.available() > 0) {
    Certificate load = cf.generateCertificate(in); 
}
in.close();

获得
证书后

Certificate cert = ....
PublicKey publicKey = cert.getPublicKey();
byte[] originalPublicKey = publicKey.getEncoded();
byte[] modifiedPublicKey = java.util.Arrays.copyOf(originalPublicKey , originalPublicKey .length);// make a copy
modifiedPublicKey[0] = !modifiedPublicKey[0]; // modify something
print(originalPublicKey); // your "print" method - implement it how you like it e.g., Arrays.toString(originalPublicKey)
print(modifiedPublicKey ); // your "print" method - implement it how you like it e.g., Arrays.toString(modifiedPublicKey)
请参阅javadoc参考


考虑到证书是什么,这似乎是一个奇怪的要求,您能解释一下您的用例吗?主要的用例是知道如何在上传到内存后修改证书内容本身,这就是我提出公钥示例的原因。我想知道这一点,因为我需要显示一些类似于签名验证的内容,其中证书中的任何更改都会使验证不可靠。可能的副本:的精确副本。每个问题一条线。