【发布时间】:2017-12-26 17:24:24
【问题描述】:
我有一个程序可以使用 pkcs#7 和 bouncycastle 对文本和 zip 文件进行签名和验证。 我正在将以下字符串写入文本和 zip 文件(其中包含 base64 编码的原始数据、SignedBytes 和证书数据):
String finalmsg="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\n" +
"<Envelope>\n" +" <OrgContent>"+new String(Base64.encode(contentbytes))+"</OrgContent>\n"+" <Signature>"+new String(Base64.encode(signedBytes))+"</Signature>\n"+" <Certificate>"+
new String(Base64.encode(keyStore.getCertificate("CertName").getEncoded()))+"</Certificate>\n"+"</Envelope>";
我能够在签名后完美地验证我的文本文件。也能够验证我的 zip 文件,但无法提取 zip 文件(出现意外的 zip 文件结束错误)
以下是将我的签名消息写入文件的代码:
if(file.getName().contains(".zip")) {
byte[] b = finalmsg.getBytes(StandardCharsets.UTF_8);
try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(address+"SIGVERFILES/s2/"+name), 4096)) {
out.write(b);
}
} else {
FileWriter fw = new FileWriter(address+"SIGVERFILES/s2/"+name,true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(finalmsg);
bw.close();
}
还能够验证并成功解压缩由其他方签名的 zip 文件。所以我的验证码没问题。我认为编写 zip 文件的方式有问题。 请不要介意缩进并要求您帮助我尝试找出这里做错了什么?
如果需要更多代码 sn-ps,请告诉我。
【问题讨论】:
标签: java bouncycastle zip pkcs#7