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

将 JavaScript 函数转换为 Dart:安全词

将 JavaScript 函数转换为 Dart:安全词

眼眸繁星 2021-11-12 16:21:18
是否可以在 Dart 中执行相同的 JavaScript 函数?我正在查看附加组件,并找到了一个与我想要做的很接近的补充。找到的补充是:https : //pub.dev/packages/js_shims你可以在这里阅读更多。 文档:JS_SHIMS该函数必须返回加密的密码。例如:密码:pass1234在 javascript 中,加密的密码返回给我:cGFzczEyMzQ=我的功能JS演示:var ezEncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function ezEncode(){  var str = document.getElementById('txtPassword').value;     var out, i, len;  var c1, c2, c3;  len = str.length;  i = 0;  out = "";  while(i < len)    {        c1 = str.charCodeAt(i++) & 0xff;        if(i == len)        {            out += ezEncodeChars.charAt(c1 >> 2);          out += ezEncodeChars.charAt((c1 & 0x3) << 4);          out += "==";          break;        }        c2 = str.charCodeAt(i++);        if(i == len)        {        out += ezEncodeChars.charAt(c1 >> 2);        out += ezEncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));        out += ezEncodeChars.charAt((c2 & 0xF) << 2);        out += "=";        break;        }        c3 = str.charCodeAt(i++);        out += ezEncodeChars.charAt(c1 >> 2);        out += ezEncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));        out += ezEncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));        out += ezEncodeChars.charAt(c3 & 0x3F);    }    document.getElementById('txtPassword').value = out;  return out;}<!DOCTYPE html><html><head>    <title></title></head><body><input type="text" hint="pass1234" value="pass1234" id="txtPassword"/>  <input type="button" value="Send" onclick="ezEncode('pass1234')"/></body></html>
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

只是一句安全的话。此密码未使用此功能加密。您的 javascript 函数所做的只是base64编码,即不同字符集中的密码字符串的表示。这是完全可逆的,而不是足够的密码加密。实际上根本没有。您可以在此处验证您的“加密”密码是否可以解码为您的原始密码字符串。


您应该在此答案中阅读有关如何正确保护和加密密码的信息。


如果您仍然对如何将字符串转换为 base64(不是加密)感兴趣,您可以使用其核心库中的 darts 转换包。


https://api.dartlang.org/stable/2.1.0/dart-convert/dart-convert-library.html


import 'dart:convert';


ezEncodeChars(String notAPassword) {

  var bytes = utf8.encode(notAPassword);

  var base64Str = base64.encode(bytes);

  return base64Str;

}


查看完整回答
反对 回复 2021-11-12
?
墨色风雨

TA贡献1853条经验 获得超6个赞

当参数值超出范围时,Javascript 函数charAt返回一个空字符串。这个空字符串转换为整数 0。Dart 抛出一个异常,表示值不在范围内。您应该自己处理超出范围的情况。


查看完整回答
反对 回复 2021-11-12
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

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