【发布时间】:2018-09-24 16:34:54
【问题描述】:
我尝试在消息上使用 base64 解码的密钥生成 sha256 HMAC。我想使用飞镖语言。在 python 中,我可以使用以下代码:
# PYTHON CODE
import hmac, hashlib, base64
...
message = 'blabla'
secret = 'DfeRt[...]=='
secret_b64 = base64.b64decode(secret)
signature = hmac.new(secret_b64, message, hashlib.sha256)
signature_b64 = signature.digest().encode('base64').rstrip('\n')
这是我对 dart 的尝试:
// DART CODE
import 'package:crypto/crypto.dart';
import 'dart:convert';
...
String message = 'blabla';
String secret = 'DfeRt[...]=='
var secret_b64 = BASE64.decode(secret);
var hmac = new Hmac(sha256, secret_b64);
// what now?
但是我不知道该怎么做。我发现了一些旧的示例代码,如下所示
var message_byte = UTF8.encode(message);
hmac.add(message_byte);
但是,Hmac 类中不再存在“add”方法。我也试过这个,但我不确定这是否正确
var message_byte = UTF8.encode(message);
var signature = hmac.convert(message_byte);
var signature_b64 = BASE64.encode(signature.bytes);
谁能帮帮我?
【问题讨论】:
-
阅读文档,发现旧的示例代码不一样。
-
确实如此,但只有在您知道自己在寻找什么的情况下,阅读文档才会有所帮助。我想我对 hmac 和 sha256 的概念也有一些麻烦。这就是为什么我不知何故迷路了。例如,我不太明白 Hmac 类的哪些新方法取代了旧的“add”方法。这就是我写这个问题的原因。
-
我收到的最好的编码建议是 Rick 在计算机中心的一个晚上。我问 Rick 如何使用系统命令,他告诉我阅读手册,我这样做改变了我的开发人员生活。有时需要花几天时间(每天8小时)学习,在那些你不明白的事情上,你的情况是
HAMC和SHA-256和Dart。随着您学习的深入,您将了解自己在寻找什么。 -
是的,但是从专家的例子和指导下学习肯定比阅读理论更有效。特别是,如果你只是玩一点。当然,如果你已经知道风是怎么吹的,那么阅读概念和深入研究事物是非常好的。然后,当您是专家时,有人会说:rtfm。但感谢您的智慧。