如何在 .Net 中创建和解析标签、长度、值 (TLV) 并在 Base64 中对其进行编码

Posted

技术标签:

【中文标题】如何在 .Net 中创建和解析标签、长度、值 (TLV) 并在 Base64 中对其进行编码【英文标题】:How to create and parse Tag, Length, Value (TLV) in .Net and encode it in Base64 【发布时间】:2022-01-02 14:42:42 【问题描述】:

二维码字段应以标签长度值(TLV)格式编码,标签值在相邻表的“标签”列中指定。

TLV编码如下:

Tag:上面提到的标记值,存储在一个字节中。 长度:字段值的UTF8编码产生的字节数组的长度。长度应存储在一个字节中。 值:字段值的UTF8编码产生的字节数组。

正在寻找 Asp.net/Vb.net

提前致谢

【问题讨论】:

你试过什么?将代码添加到您的问题中,指出我们哪里出错了。错误信息?等等。采取tour。 我不知道从哪里开始,我发现了一些相同的帖子,但它是由@Salla (github.com/SallaApp/ZATCA) 编写的 php,看起来与 vb.net 类似 为 .Net 制作的大多数库都可以在 vb.net 中使用。谷歌“.net 中的 TLV”。我得到了很多结果。 是的,我做到了,找到了 2 个,一个用于 PHP,另一个用于 JAVA。实际上,这与 KSA 的新电子发票项目 ZATCA 有关。如果其他人发现了什么,仍然会在此处搜索并发布。 寻求软件库的问题不在本站主题范围内。 【参考方案1】:

我能够在 vb.net 中成功创建 TLV 编码,并且它通过了 Zatca 验证。 我用 5 个输入创建了一个非常简单的表单: enter image description here

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        Dim value1 As String = getTLV(1, TextBox1.Text)
        Dim value2 As String = getTLV(2, TextBox2.Text)
        Dim value3 As String = getTLV(3, TextBox3.Text)
        Dim value4 As String = getTLV(4, TextBox4.Text)
        Dim value5 As String = getTLV(5, TextBox5.Text)
        Dim b As Byte() = System.Text.Encoding.UTF8.GetBytes(value1 & value2 & value3 & value4 & value5)
        Dim t As String = Convert.ToBase64String(b)
        TextBox6.Text = t
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Private Function getTLV(tag As Integer, value As String) As String
    Return Chr(tag) & Chr(value.Length) & value
End Function

【讨论】:

以上是关于如何在 .Net 中创建和解析标签、长度、值 (TLV) 并在 Base64 中对其进行编码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 locust 中创建和使用自定义命令行参数

如何在 NMake 中创建和使用多行字符串变量?

在PHP中创建和解析JSON数据

如何以编程方式在 Recurly 中创建和兑换优惠券?

从 C#/.Net 在 oracle 中创建和编译“动态”存储过程

在 SQLite.Net-PCL 中创建和使用具有复合主键的表