我想在dart中创建一个生成随机字符串的函数。它应该包含字母和数字混合在一起。我该怎么做呢?
isr3a4wc1#
或者如果你不想使用软件包,你可以做一个简单的实现,比如:
import 'dart:math'; void main() { print(getRandomString(5)); // 5GKjb print(getRandomString(10)); // LZrJOTBNGA print(getRandomString(15)); // PqokAO1BQBHyJVK } const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890'; Random _rnd = Random(); String getRandomString(int length) => String.fromCharCodes(Iterable.generate( length, (_) => _chars.codeUnitAt(_rnd.nextInt(_chars.length))));
我需要补充的是,您不应该使用此代码生成密码或其他类型的秘密。如果您这样做,请至少使用Random.secure()来创建随机生成器。
Random.secure()
cetgtptt2#
选项A(带字符代码):
import 'dart:math'; String generateRandomString(int len) { var r = Random(); return String.fromCharCodes(List.generate(len, (index) => r.nextInt(33) + 89)); }
使用可见字符(包括特殊字符)生成随机字符串。
带有预定义字符串的选项B:
import 'dart:math'; String generateRandomString(int len) { var r = Random(); const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890'; return List.generate(len, (index) => _chars[r.nextInt(_chars.length)]).join(); }
ulydmbyx3#
在blog article中找到关于加密字符串的以下内容:
import 'dart:math'; import 'dart:convert'; String getRandString(int len) { var random = Random.secure(); var values = List<int>.generate(len, (i) => random.nextInt(255)); return base64UrlEncode(values); }
字符串总是以==结尾,我也认为这不是最快的解决方案,但是你不需要第三方包,也不需要声明晦涩的常量。
==
5vf7fwbs4#
import 'dart:math'; String generateRandomString(int len) { var r = Random(); String randomString =String.fromCharCodes(List.generate(len, (index)=> r.nextInt(33) + 89)); return randomString; }
acruukt95#
如果您关心随机字符串的唯一性和安全性,可以轻松地使用UUID package
var uuid = Uuid(); // Generate a v1 (time-based) id uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' // Generate a v4 (random) id uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'
5条答案
按热度按时间isr3a4wc1#
或者如果你不想使用软件包,你可以做一个简单的实现,比如:
我需要补充的是,您不应该使用此代码生成密码或其他类型的秘密。如果您这样做,请至少使用
Random.secure()
来创建随机生成器。cetgtptt2#
选项A(带字符代码):
使用可见字符(包括特殊字符)生成随机字符串。
带有预定义字符串的选项B:
ulydmbyx3#
在blog article中找到关于加密字符串的以下内容:
字符串总是以
==
结尾,我也认为这不是最快的解决方案,但是你不需要第三方包,也不需要声明晦涩的常量。5vf7fwbs4#
acruukt95#
如果您关心随机字符串的唯一性和安全性,可以轻松地使用UUID package