Encoding 用于编码CDR的Bouncy Castle示例

Encoding 用于编码CDR的Bouncy Castle示例,encoding,bouncycastle,asn.1,cdr,Encoding,Bouncycastle,Asn.1,Cdr,我正在尝试使用ASN.1符号对PGWRecord CDR进行编码,从中的第89页开始 我已经寻找了一段时间的例子,我可以如何做到这一点,但没有任何效果。是否有任何示例可以向我展示如何使用Bouncy Castle执行此操作?或者有没有比《弹跳城堡》更好的方法来编码这个CDR 关于如何做到这一点的一步一步的指导将是非常好的 任何帮助都将不胜感激。谢谢大家 试着看一看。你有ASN.1定义你试图编码的内容。BinaryNotes将生成类,用于对ASN.1中的对象进行编码/解码 BinaryNotes使

我正在尝试使用
ASN.1
符号对
PGWRecord CDR
进行编码,从中的第89页开始

我已经寻找了一段时间的例子,我可以如何做到这一点,但没有任何效果。是否有任何示例可以向我展示如何使用Bouncy Castle执行此操作?或者有没有比《弹跳城堡》更好的方法来编码这个CDR

关于如何做到这一点的一步一步的指导将是非常好的

任何帮助都将不胜感激。谢谢大家

试着看一看。你有ASN.1定义你试图编码的内容。BinaryNotes将生成类,用于对ASN.1中的对象进行编码/解码

BinaryNotes使用xlst转换生成类。您可以修改转换,使其使用bouncy类进行编码/解码。

请尝试查看。你有ASN.1定义你试图编码的内容。BinaryNotes将生成类,用于对ASN.1中的对象进行编码/解码


BinaryNotes使用xlst转换生成类。您可以修改转换,使其使用bouncy类进行编码/解码。

Ya,就在两个月前,我在bouncy castle上工作,对3GPP中的哪些CDR进行解码。目前我擅长解码,如果解码有任何问题,我可以给出更多的例子,我可以很容易地解决它

但对于你的问题,我可以提出一些观点,如果你有任何问题,请添加评论。它不仅对你们有帮助,而且对刚开始编码/解码过程的新蜜蜂也有帮助

a) 您在编码CDRS文件时选择了正确的API(Bouncy Castle)

b) 您可以选择付费版本的编码/解码API,但它过于膨胀

c) 我发现了3个付费API,它们提供了良好和预期的结果,它们是

1) [OSS Nokalva][1]
2) Obj-Sys
3) unigone
d) 对我来说,Bouncy castle给出了100%的结果,然后支付API,即使它们工作得很好。如果您想使用Bouncy castle,那么您需要在编码方面付出更多的努力,因此Bouncy castle是一个支持basic和一些高级解析器的API,要进行任何编码/解码,您需要按照ASN.1语法规范编写java类等等。。我可以写的步骤,但它将是太长,所以在这个答案结束时,我给你一个链接,更好地解释它。单击并下载
bcprov-jdk15on-154.tar.gz
文件

e) 解压下载的软件包并转到
bcprov-jdk15on-154\bcprov-jdk15on-154\src\org\bouncycastle\asn1\test
您将找到N个根据ASN.1语法规范编码/解码CDR的示例

f) 如果你想通过一个简单的例子来理解,那么你可以轻松地完成你的工作


不过,如果你觉得很难理解,那就写一篇评论,我会尽力帮助你

Ya,就在两个月前,我在Bouncy castle上工作,解码3GPP中的哪一个压缩编码文件的CDR。目前我擅长解码,如果解码有任何问题,我可以给出更多的例子,我可以很容易地解决它

但对于你的问题,我可以提出一些观点,如果你有任何问题,请添加评论。它不仅对你们有帮助,而且对刚开始编码/解码过程的新蜜蜂也有帮助

a) 您在编码CDRS文件时选择了正确的API(Bouncy Castle)

b) 您可以选择付费版本的编码/解码API,但它过于膨胀

c) 我发现了3个付费API,它们提供了良好和预期的结果,它们是

1) [OSS Nokalva][1]
2) Obj-Sys
3) unigone
d) 对我来说,Bouncy castle给出了100%的结果,然后支付API,即使它们工作得很好。如果您想使用Bouncy castle,那么您需要在编码方面付出更多的努力,因此Bouncy castle是一个支持basic和一些高级解析器的API,要进行任何编码/解码,您需要按照ASN.1语法规范编写java类等等。。我可以写的步骤,但它将是太长,所以在这个答案结束时,我给你一个链接,更好地解释它。单击并下载
bcprov-jdk15on-154.tar.gz
文件

e) 解压下载的软件包并转到
bcprov-jdk15on-154\bcprov-jdk15on-154\src\org\bouncycastle\asn1\test
您将找到N个根据ASN.1语法规范编码/解码CDR的示例

f) 如果你想通过一个简单的例子来理解,那么你可以轻松地完成你的工作


不过,如果你觉得很难理解,那就写一篇评论,我会尽力帮助你

我猜
GPRSRecord
选项的编码如下所示。请小心标记值,并将值从字符串视图转换为十六进制和BCD格式,以便
IMSI
GSNAddress
值:

ASN1EncodableVector v = new ASN1EncodableVector();

v.add(new BERTaggedObject(true, 0, new ASN1Integer(18))); //e.g. sgsnPDPRecord (18)
v.add(new BERTaggedObject(true, 3, new BEROctetString(Hex.decode("490154203237518")); //IMSI. String to BCD bytes conversion needed
v.add(new BERTaggedObject(true, 4, new BERTaggedObject(true, 0, new DEROctetString(Hex.decode("994507776655"))))); // GSNAddress
v.add(new BERTaggedObject(true, 5, new BEROctetString(Hex.decode("00DB")))); //ChargingID

byte[] encoded =  BERTaggedObject.getInstance(new BERTaggedObject(true, 78, new BERSet(v))).getEncoded(); //SGWRecord

我猜
GPRSRecord
选项的编码如下所示。请小心标记值,并将值从字符串视图转换为十六进制和BCD格式,以便
IMSI
GSNAddress
值:

ASN1EncodableVector v = new ASN1EncodableVector();

v.add(new BERTaggedObject(true, 0, new ASN1Integer(18))); //e.g. sgsnPDPRecord (18)
v.add(new BERTaggedObject(true, 3, new BEROctetString(Hex.decode("490154203237518")); //IMSI. String to BCD bytes conversion needed
v.add(new BERTaggedObject(true, 4, new BERTaggedObject(true, 0, new DEROctetString(Hex.decode("994507776655"))))); // GSNAddress
v.add(new BERTaggedObject(true, 5, new BEROctetString(Hex.decode("00DB")))); //ChargingID

byte[] encoded =  BERTaggedObject.getInstance(new BERTaggedObject(true, 78, new BERSet(v))).getEncoded(); //SGWRecord

注意,BinaryNotes至少从2011年开始就没有更新过,而且从2007年开始就没有更新过。从那时起,已经进行了一些更改(例如,2008年发布了ASN.1规范文档)。可以使用免费提供的编译器生成Java类或C/C++代码,以便与JNI一起使用,例如,Lev Walkin的:.N.b.,BinaryNotes至少从2011年起就没有更新过,而且从2007年起也没有更新过。从那时起,已经进行了一些更改(例如,2008年发布了ASN.1规范文档)。可以使用免费提供的编译器生成Java类或C/C++代码以与JNI一起使用,例如Lev Walkin的:。您愿意提供更新的链接吗?提供的链接上的内容不可用。谢谢你。@sweetjonnie很抱歉这么说,我已经三年没有工作联系了。如果您打算使用Bouncy Castle,您应该通过