猿问

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

是否可以在 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>


眼眸繁星
浏览 192回答 2
2回答

慕容708150

只是一句安全的话。此密码未使用此功能加密。您的 javascript 函数所做的只是base64编码,即不同字符集中的密码字符串的表示。这是完全可逆的,而不是足够的密码加密。实际上根本没有。您可以在此处验证您的“加密”密码是否可以解码为您的原始密码字符串。您应该在此答案中阅读有关如何正确保护和加密密码的信息。如果您仍然对如何将字符串转换为 base64(不是加密)感兴趣,您可以使用其核心库中的 darts 转换包。https://api.dartlang.org/stable/2.1.0/dart-convert/dart-convert-library.htmlimport 'dart:convert';ezEncodeChars(String notAPassword) {&nbsp; var bytes = utf8.encode(notAPassword);&nbsp; var base64Str = base64.encode(bytes);&nbsp; return base64Str;}

墨色风雨

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

相关分类

JavaScript
我要回答