gpt4 book ai didi

dart - Dart 和 Vuforia 的 VWS API 中的 Base64 HMAC-SHA1 和 MD5 加密

转载 作者:行者123 更新时间:2023-12-01 22:23:42 26 4
gpt4 key购买 nike

要通过 Vuforia 的 VWS API 与 Vuforia 进行通信,我必须做一些棘手的事情:首先创建此字符串

StringToSign = 
HTTP-Verb + "\n" +
Content-MD5 + "\n" +
Content-Type + "\n" +
Date + "\n" +
Request-Path;

其中 Content-MD5 是请求正文的加密...

(from the first boundary to the last one, including the boundary itself). For request types without request body, include the MD5 hash of an empty string which is “d41d8cd98f00b204e9800998ecf8427e”.

然后使用这个字符串,您必须执行与此 Java 代码等效的操作

Signature = Base64 (HMAC-SHA1 (server_secret_key, StringToSign));

其中server_secret_key是一个常量。最后,您必须将其插入到此表单的授权 header 中

授权:VWS {provision_access_key}:{签名}

我没有加密方面的经验,有人可以告诉我如何在 Dart 中执行此操作吗?

编辑

有关此内容的更多信息,请访问 Setting Up the API

最佳答案

您需要的所有算法都在 dart crypto package 中.

import 'dart:convert';
import 'dart:io';

import 'package:crypto/crypto.dart' as crypto;

main() {
var contentStr = '{x:"y"}';
var content = UTF8.encode(contentStr);
var md5 = new crypto.MD5();
md5.add(content);

var verb = 'GET';
var hash = crypto.CryptoUtils.bytesToHex(md5.close());
var type = 'text/plain';
var date = HttpDate.format(new DateTime.now());
var path = '/request/path';
var stringToSign = '$verb\n$hash\n$type\n$date\n$path';
print(stringToSign);
print('');

var keyStr = "0102030405060708090a0b0c0d0e0f";
var key = [];
for (int i = 0; i < keyStr.length; i += 2) {
key.add(int.parse(keyStr.substring(i, i + 2), radix: 16));
}
var hmac = new crypto.HMAC(new crypto.SHA1(), key);
hmac.add(UTF8.encode(stringToSign));
print(crypto.CryptoUtils.bytesToHex(hmac.close()));
}

因为你需要弄清楚不同部分的确切编码,例如日期。如果输入中只有一位错误,则任何操作都不起作用。

如果您有一些输入和输出的示例,则更容易获得正确的详细信息。例如。测试空字符串的MD5

print(crypto.CryptoUtils.bytesToHex(new crypto.MD5().close()));

关于dart - Dart 和 Vuforia 的 VWS API 中的 Base64 HMAC-SHA1 和 MD5 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28059022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com