这是我的方法:
import org.bouncycastle.asn1.ASN1InputStream;
import java.io.ByteArrayInputStream;
...
public static byte[] toDERBytes(byte[] data) throws IOException
{
ByteArrayInputStream inStream = new ByteArrayInputStream(data);
//Uses imported bouncy castle library:
ASN1InputStream asnInputStream = new ASN1InputStream(inStream);
byte[] derArray = asnInputStream.readObject().getEncoded();
asnInputStream.close();
return derArray;
}
根据BouncyCastle 文档,我看到ASN1InputStream.readobject() 实际上应该得到一个 DER 对象而不是 ASN1。(据我了解,DER 是 ASN1 的一个子类型)
然后我返回字节。
这有一半的时间有效,但另一半我得到了这个错误:
java.io.IOException: DER length more than 4 bytes: XXX
我的问题是:
- 为什么我有时只会收到错误消息?(我总是给它 65 字节的数据)
- 我如何解决它?
- 我的DER编码方式正确吗?