是否可以在 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;
}
墨色风雨
TA贡献1853条经验 获得超6个赞
当参数值超出范围时,Javascript 函数charAt返回一个空字符串。这个空字符串转换为整数 0。Dart 抛出一个异常,表示值不在范围内。您应该自己处理超出范围的情况。
添加回答
举报
0/150
提交
取消