我正在尝试将加密货币交换 API 从 JavaScript 移植到 Rust。JavaScript 版本进行身份验证并连接。有效负载和密钥使用 Hmac Sha256 进行签名并编码为 Base64。下面是 JavaScript 的工作实现。
var param = "test";
var privateKey = "secret";
var signature = crypto.createHmac('sha256', new Buffer(privateKey, 'utf8'))
.update(param)
.digest('base64');
Run Code Online (Sandbox Code Playgroud)
它返回以下签名:Aymga2LNFrM+tnkr6MYLFY2Jou46h2/Omogeu0iMCRQ=
在 Rust 中,我使用 Hmac SHA256 并将结果编码回 Base64,但我无法接近预期的签名。这是我两天来最好的尝试:
extern crate ring;
extern crate data_encoding;
extern crate hex;
use ring::{digest, hmac};
use data_encoding::BASE64;
use hex::encode as hex_encode;
fn main() {
let secret_key = "secret";
let payload = "test";
let signed_key = hmac::SigningKey::new(&digest::SHA256, secret_key.as_bytes());
let signature = hex_encode(hmac::sign(&signed_key, payload.as_bytes()).as_ref());
let b64_encoded_sig …Run Code Online (Sandbox Code Playgroud) 对不起我的潜力nOOb'ness,但一直试图得到这几个小时,似乎无法找到一个优雅的解决方案的c ++ 98.
我的问题是,说我有一个字符串{a,b,c,d,e,f}的向量,我想把'e'移到第二个元素我怎么会这样做?显然,预期的输出现在打印出来{a,e,b,c,d,f}
理想情况下,寻找一个单独的操作,让我这样做只是为了提高效率,但我很乐意听到一些关于如何实现这一目标的建议.
谢谢.