如何在dart中转换这个废弃的解密python代码



我正在尝试获取被防火墙屏蔽的屏蔽电子邮件。我在python中找到了解决方案,但我不知道如何在dart或flutter中做到这一点。这是python代码

r = int(encodedString[:2],16)
email = ''.join([chr(int(encodedString[i:i+2], 16) ^ r) for i in range(2, len(encodedString), 2)])
return email
print cfDecodeEmail('543931142127353935313e352e7a373b39') # usage

  • 在Python中,encodedString[:2]/encodedString[i:i+2]encodedString中提取两个字符。Dart等价物(假定ASCII字符)将分别为encodedString.substring(0, 2)encodedString(i, i + 2)

  • Dart中相当于Python的''.join(list)的是list.join()

  • Dart中相当于Python列表综合([i for i in items])的是集合-for:[for (var i in items) i]

  • 与Dart中Python的for i in range(2, len(encodedString), 2)等效的是使用一个带有开始、条件和增量的基本for循环:for (var i = 2; i < encodedString.length; i += 2)

  • 在Python中,int(string, 16)string解析为十六进制数。在Dart中,使用int.parse(string, radix: 16)

  • 在Python中,chr(integer)从指定的代码点创建一个字符串。Dart中的等价物是String.fromCharCode(integer)

将其整合在一起:

String cfDecodeEmail(String encodedString) {
var r = int.parse(encodedString.substring(0, 2), radix: 16);
var email = [
for (var i = 2; i < encodedString.length; i += 2)
String.fromCharCode(
int.parse(encodedString.substring(i, i + 2), radix: 16) ^ r,
)
].join();
return email;
}
void main() {
// Prints: me@usamaejaz.com
print(cfDecodeEmail('543931142127353935313e352e7a373b39'));
}

最新更新