如何在 .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 中对其进行编码的主要内容,如果未能解决你的问题,请参考以下文章