Что пробовали: файловая система (хранение в подпапках вида /a/b/c.../a1.txt, скорость вставки получилась медленная
Тут много времени уходит на создание папок.
Есть такой вариант:
1) Генерируете в памяти по N штук (в завис от размера ram).
dataBundle (словарь/массив/hashSet или т.п.):
key = pass[0..M] //первые M символов (играем с этим значением)
value = [[pass, hash], [pass2, hash2], [pass3, hash3]]
2) Скидываем в файл большим массивом (т.е. построчно будет каждый раз открывать)
foreach(var bundle in dataBundle)
{
// ! не текстовой файл - бинарный
AppendBytesToFile(d.key, d.value);
// можем запоминать открытые файлы, чтобы не открывать их потом опять.
}
Результат:
0000.txt
0001.txt
...
asdf.txt:
asdf0001 hash1
asdf0002 hash2
...
asdfZZZZ hash