为了账号安全,请及时绑定邮箱和手机立即绑定

关于 Dart 中字符串编码/解码的困惑

关于 Dart 中字符串编码/解码的困惑

郎朗坤 2021-09-14 16:25:14
我正在尝试将 python 代码转换为 dart。它有两个部分。这是第一个:passw = (salt + password).encode('utf8')ha = base64.b64encode(hashlib.sha512(passw).digest())return ha.decode('utf8')这是第二个:l2 = hashlib.sha512((hash_level_1 + date).encode('utf8')).digest()return base64.urlsafe_b64encode(l2).decode('utf8')但是,我在实现第一部分 python 代码时卡住了。目前,我有这个代码:var passw = utf8.encode(computedSalt + password);var sha512 = pointycastle.Digest("SHA-512");var result = base64.encode(sha512.process(passw));_key = utf8.decode(result);但这不起作用,因为base64.encode提供字符串,并utf8.decode期望字节。如何将 python 代码转换为 dart?第一个python代码的最后两行将什么转换为什么?我对转换系统感到困惑,我不知道该怎么做。
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

我已经修好了。


var passw = utf8.encode(computedSalt + password);

var sha512 = pointycastle.Digest("SHA-512");

var result = base64.encode(sha512.process(passw));

return result;


var result = sha512.process(utf8.encode(_key + date));

return base64.encode(result)

魔法。


在第一个代码中,passw是字节格式,通过 utf8 编码。然后,我用 sha512 对其进行散列并编码为 base64。ha.decode('utf8')在 dart 中不需要额外调用 python 代码 ( )。


在第二个代码块中与第一个基本相同。然而,在某些情况下,python 似乎对 base64 编码略有不同——它可能是 urlsafe 变体。我通过在结果中替换+by-和/by暂时解决了它_。


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信