#tlv #parser #tags #emv #data #messages #tag-length-value

bin+lib emv_tlv_parser

解析 emv tlv 消息的库

9 个版本

0.1.11 2024 年 2 月 19 日
0.1.10 2024 年 2 月 14 日
0.1.8 2024 年 1 月 21 日
0.1.6 2023 年 12 月 30 日
0.1.3 2023 年 11 月 29 日

4#tlv

Download history 13/week @ 2024-03-08 35/week @ 2024-03-15 61/week @ 2024-03-29 13/week @ 2024-04-05

每月 252 次下载
2 crates 中使用

MIT/Apache

26KB
395 代码行

TLV 解析器

Crates.io Crates.io build workflow release workflow

这是一个用 Rust 和 PHP 实现的 TLV (标签-长度-值) 解析器。解析器可以解码 TLV 编码的数据,并将每个标签表示为一个名为 Tag 的结构体。Tag 结构体具有以下字段

  • id:表示标签标识符的字节数组。
  • length:值字段的长度。
  • value:表示值的字节数组。

此外,Tag 结构体还有一个 is_constructed 方法,用于检查标签是否已构造。

作为 PHP Web 服务器运行预编译的 Rust 程序

  1. 下载源代码并转到源代码的根目录
  2. PowerShell 中运行以下命令
     .\tlv_parser_downloader.bat
    
  3. 使用以下命令运行 PHP Web 服务器
    php -S localhost:12345
    
  4. 打开您的浏览器并访问以下链接
    localhost:12345
    

重要提示:由于 PHP Web 服务器使用 Rust 程序来解析消息,因此您需要它。您可以通过从源代码构建 Rust 编写的程序的发布版本或通过上述 tlv_parser_downloader 下载可执行文件来实现此程序。

如何作为库使用

    use emv_tlv_parser::parse_tlv;
    let data_raw = "6F1A840E315041592E5359532E4444463031A5088801025F2D02656E";

    match parse_tlv(data_raw.to_string()) { 
        Ok(tags) => tags.iter().for_each(|tag| println!("{}", tag)), 
        Err(e) => eprintln!("Error parsing TLV: {}", e) 
    }

运行示例和测试

要运行程序,请使用以下命令: cargo run

要运行测试,请使用以下命令: cargo test

依赖关系

~1.2–1.8MB
~35K SLoC