我正在尝试进行结构序列化,其中字节最终将被发送到管道,重建并在它们上调用方法.
我创建了一个特征,这些结构将适当地实现,我使用serde和serde-cbor进行序列化:
extern crate serde_cbor;
#[macro_use]
extern crate serde_derive;
extern crate serde;
use serde_cbor::ser::*;
use serde_cbor::de::*;
trait Contract {
fn do_something(&self);
}
#[derive(Debug, Serialize, Deserialize)]
struct Foo {
x: u32,
y: u32,
}
#[derive(Debug, Serialize, Deserialize)]
struct Bar {
data: Vec<Foo>,
}
#[derive(Debug, Serialize, Deserialize)]
struct Baz {
data: Vec<Foo>,
tag: String,
}
impl Contract for Bar {
fn do_something(&self) {
println!("I'm a Bar and this is my data {:?}", self.data);
}
}
impl Contract for Baz {
fn do_something(&self) …Run Code Online (Sandbox Code Playgroud) 请帮助建议Flatbuffers和CBOR协议的优缺点。这两种二进制格式都声称在它们的网站上是不错的,但是我无法在两者之间做出一些很好的区别。
平面缓冲区:
优点:
坏处:
CBOR
优点:
坏处:
PS:
与平缓缓冲区相比,感觉CBOR中的类型管理将在性能上付出高昂的代价,但是由于CBOR是标准化协议,因此如果这种差异不大,我倾向于使用它。请让我知道你们都推荐两个,为什么。
我必须CBOR使用cbor节点模块解码编码数组。
当我启动命令时:
const decodedData = base45.decode(greenpassBody);
const output = pako.inflate(decodedData);
const results = cbor.decodeAllSync(output); // this line
Run Code Online (Sandbox Code Playgroud)
正在触发此错误:
_stream_readable.js:529 Uncaught ReferenceError: process is not defined
at emitReadable (_stream_readable.js:529)
at addChunk (_stream_readable.js:303)
at readableAddChunk (_stream_readable.js:280)
at NoFilter.Readable.push (_stream_readable.js:241)
at NoFilter.Transform.push (_stream_transform.js:139)
at NoFilter._transform (index.js:220)
at NoFilter.Transform._read (_stream_transform.js:177)
at NoFilter.Transform._write (_stream_transform.js:164)
at doWrite (_stream_writable.js:409)
at writeOrBuffer (_stream_writable.js:398)
Run Code Online (Sandbox Code Playgroud)
由stram-browserifypolyfill 触发,需要在我的网络应用程序中使用所有这些包。
当我在网上阅读时,我尝试process在我的 中安装该模块package.json,然后在我的webpack配置文件中我尝试了几种方法:
fallback: {
stream: require.resolve('stream-browserify'),
util: require.resolve('util/'),
zlib: require.resolve('browserify-zlib'),
assert: …Run Code Online (Sandbox Code Playgroud) 我有以下 JSON:
[
{
2: {
"c": true
}
},
{
3: {
"p": 10
}
}
]
Run Code Online (Sandbox Code Playgroud)
我想转换为 CBOR 格式。根据 cbor.me 我有以下输出:
82A102A16163F5A103A161700A
但是,当使用 Jackson Binary CBOR Serializer 时,我有以下输出:
82BF02BF6163F5FFFFBF03BF61700AFFFF
这并没有错,但没有优化......我有额外的 4 个不必要的字节添加到它真正可能的位置。
然后我尝试手动序列化 JSON 但结果相同:
@Override
public void serialize(Request value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartArray(value.getDataList().size());
for (Data data : value.getDataList()) {
jgen.writeStartObject(new Map[1]);
jgen.writeFieldId(data.getItem());
jgen.writeStartObject();
if (data.getObject().getC() != null) {
jgen.writeBooleanField("c", data.getObject().getC());
}
if (data.getObject().getP() != null) {
jgen.writeNumberField("p", data.getObject().getP());
}
jgen.writeEndObject();
jgen.writeEndObject();
} …Run Code Online (Sandbox Code Playgroud) 我正在努力使新冠疫苗接种二维码的内容清晰可见。找到了如下页面。我只是不太明白如何读取扫描的字符串。
细绳:HC1:6BFOXN*TS0BI$ZD4N9:9S6RCVN5+O30K3/XIV0W23NTDEPWK G2EP4J0B3KLASMUG8GJL8LLG.3SA3/-2E%5VR5VVBJZILDBZ8D%JTQOL2009UVD0HX2JN*4CY009TX/9F/GZ%5U1MC82*%95HC2FCG2K80H-1GW$5IKKQJO0OPN484SI4UUIMI.J9WVHWVH+ZE/T9MX1HRIWQHCR2HL9EIAESHOP6OH6MN9*QHAO96Y2/*13A5-8E6V59I9BZK6:IR/S09T./0LWTHC0/P6HRTO$9KZ56DE/.QC$QUC0:GOODPUHLO$GAHLW 70SO:GOV636*2. KOKGKZGJMI:TU+MMPZ5OV1 V125VE-4RZ4E%5MK9BM57KPGX7K:7D-M1MO0Q2AQE:CA7ED6LF90I3DA+:E3OGJMSGX8+KL1FD*Y49+574MYKOE1MJ-69KKRB4AC8.C8HKK9NTYV4E1MZ3K1:HF.5E1MRB4WKP/HLIJL8JF8JF172M*8OEB2%7OREF:FO:7-WF11SKCU1MH8FWPVH%L635OBXTY*LPM6B9OBYSH:4Q1BQ:A5+I6:DQR9VKR8 BLHCFQMZA5:PHR14%GV4ZOP50$ A 3
显然这个字符串是由 CBOR Web Token 编码的。有谁知道我如何使用 Java 或 PHP 等对其进行解码?
我有一个 DER 格式的 base64 编码的公钥。在Python中,如何将其转换为COSE密钥?
这是我失败的尝试:
from base64 import b64decode
from cose.keys import CoseKey
pubkeyder = "...=="
decCborData.key = CoseKey.decode(b64decode(pubkeyder))
Run Code Online (Sandbox Code Playgroud) 我目前正在为 Django 构建一个 AJAX 注册端点,以允许 FIDO2 身份验证(物理硬件密钥登录)。这是来自Yubico 官方 fido2 python 库的示例/文档。
唯一的依赖项是cbor.js和js-cookie。服务器端的一切现在都在工作,但是,我在调用该navigator.credentials.create方法时不断收到此 JavaScript 错误
TypeError: Failed to execute 'create' on
'CredentialsContainer': The provided value is not of
type '(ArrayBuffer or ArrayBufferView)'
Run Code Online (Sandbox Code Playgroud)
编码:
var csrftoken = Cookies.get('csrftoken');
fetch('/register/begin', {
method: 'POST',
headers: {
'X-CSRFToken': csrftoken
}
}).then(function(response) {
if(response.ok) {
return response.arrayBuffer();
}
throw new Error('Error getting registration data!');
}).then(CBOR.decode).then(function(options) {
console.log(options)
//This line is not working
return navigator.credentials.create(options);
//More code... complete registration... …Run Code Online (Sandbox Code Playgroud) 在对下一代科学数据格式的讨论中,已经确定需要某种类似 JSON 的数据结构(字段的逻辑分组)。此外,最好利用现有的编码而不是使用自定义的二进制结构。对于序列化格式有很多选择。对于那些具有此类编码经验的人的任何指导或见解表示赞赏。
要求:在我们的格式中,数据需要打包在记录中,通常不大于 4096 字节。每条记录必须可独立使用。数据必须在未来几十年内可读。数据归档和交换是通过存储和传输一系列记录来完成的。数据损坏必须只影响损坏的记录,使文件/流/对象中的所有其他记录都可读。
优先级(大致按顺序)是:
我们已经开始研究 Protobuf ( Protocol Buffers RFC )、CBOR ( RFC ) 和一些MessagePack。
那些有经验的人提供的任何可以帮助我们确定最合适的信息,或者更重要的是,避免陷阱和死胡同的信息,我们将不胜感激。
提前致谢!
你好,我正在尝试读取我的绿通证书,我知道当你扫描二维码时,它会出现类似 HC1:NHFDFGDF...... 的内容,我也知道这是编码为 base45 的,所以我做了一个小小的 javascript 解码器,这是我的代码:
\nconst base45 = require(\'base45\');\n\n//of course my personal HC1: isnt here\nconst encodedData = \'C0C9BQF2LVU.TMBX4KDL*XD/GPWBILC9GGBYPLR-SAG1CSQ6U7SSQY%SJWLK34JWLG56H0API0TUL:12>\'\n\nconst decodedData = base45.decode(encodedData).toString(\'utf-8\');\n\nconsole.log(decodedData);\nRun Code Online (Sandbox Code Playgroud)\n这是回应:
\nx\xda\xbb\xef\xbf\xbd\xe2\xbb\x88Q\xef\xbf\xbd\xef\xbf\xbdC#?\xef\xbf\xbd\xef\xbf\xbd-E\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdK\xef\xbf\xbdBX\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd6\xb3I%|\xef\xbf\xbdzl\xef\xbf\xbd\xc8\xbc\xef\xbf\xbdqIbY\xe3\xaa\xa4\xef\xbf\xbd\xef\xbf\xbd\n\xef\xbf\xbd\xd2\xa2<\xef\xbf\xbd\xd2\xb2\xef\xbf\xbdL\xef\xbf\xbd\xef\xbf\xbd ?\xef\xbf\xbd\xef\xbf\xbd0gO+C\xef\xbf\xbd\xef\xbf\xbd+\xef\xbf\xbd`\xef\xbf\xbd\xef\xbf\xbd`\xd7\x800\xef\xbf\xbdH\'W\xef\xbf\xbdP\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdWwe\xcf\xa4\xef\xbf\xbd|\xef\xbf\xbd\xef\xbf\xbdI)yLI)%YFF\xef\xbf\xbd\xef\xbf\xbdf\xef\xbf\xbdFfI\xef\xbf\xbd\xc5\xa5\xef\xbf\xbd\xef\xbf\xbdy\xef\xbf\xbd\xef\xbf\xbd%\xef\xbf\xbdWe\xef\xbf\xbd+\xef\xbf\xbd$*\'\xde\x95\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdkh\xef\xbf\xbdf\xef\xbf\xbd\xef\xbf\xbdI\xef\xbf\xbd9\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdF\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdF\xef\xbf\xbdI\xef\xbf\xbd)LI%\xef\xbf\xbd&\xef\xbf\xbd\xc6\x96fIeY\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd)\xef\xbf\xbdIY\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdF {\n \xef\xbf\xbdsVp\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd*8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdz\xef\xbf\xbd8*\xef\xbf\xbd\xef\xbf\xbd:;\'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n pMN\xef\xbf\xbd+*\xef\xbf\xbd\xef\xbf\xbd*\xef\xbf\xbd+JN\xef\xbf\xbd+\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\n \xef\xbf\xbd\xef\xbf\xbd**K-J5\xef\xbf\xbd3\xef\xbf\xbd3\xef\xbf\xbdp8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdyM]\xef\xbf\xbdo\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdE\xef\xbf\xbd_\xef\xbf\xbd\xef\xbf\xbdO.\xef\xbf\xbd\xcf\xa9\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n\xef\xbf\xbdg\xef\xbf\xbd\xcb\xbd\xef\xbf\xbd\xef\xbf\xbd\\\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd="\xef\xbf\xbd\xef\xbf\xbd]\xdb\xb7\n\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd{\xef\xbf\xbd\xef\xbf\xbdKq \xef\xbf\xbd\xef\xbf\xbd\nRun Code Online (Sandbox Code Playgroud)\n我读到的是,它的 base45 解码将导致 zlib 压缩文件,其中解压将导致 CBOR Web 令牌,但我卡住了,你能帮助我吗?这个结果正常吗?我还在学习
\n我正在寻找这种新的二进制数据表示的任何实现。