[erlang-questions] Password generator in Erlang

Loïc Hoguin <>
Tue Aug 14 17:40:45 CEST 2012


os:cmd("pwgen | cut -c 1-8").

On 08/14/2012 05:35 PM, Zabrane Mickael wrote:
> Hi guys,
>
> This one fires a lot of collisions
> (http://schemecookbook.org/Erlang/NumberRandomNumber):
>
> ------------------
> test() ->
>      crypto:start(),
>      N = 10000,
>      io:format("Generate ~p random passwords and check for collisions
> ...~n", [N]),
>      test(N, dict:new(), 0).
> test(0, _, C) ->
>      io:format("Number of collisions: ~p~n", [C]);
> test(N, Dict, C) ->
>      Password = passwd(),
>      case dict:find(Password, Dict) of
>          {ok, _} -> %% collision detected
>              test(N - 1, Dict, C + 1);
>          error ->
>              test(N - 1, dict:append(Password, 1, Dict), C)
>      end.
>
> passwd() ->
>      passwd(8).
> passwd(Length) ->
>      {A1,A2,A3} = now(),
>      random:seed(A1, A2, A3),
>      lists:flatten(lists:foldl(fun(_,AccIn) ->
>                                        [random:uniform(90) + 32 | AccIn]
> end,
>                                [], lists:seq(1,Length))).
>
> ----------------
>
>  > passwd:test().
> Generate 10000 random password and check for collisions ...
> Number of collisions: 1182
>
> Anything better guys? Something with less collisions if possible.
>
> Regards,
> Zabrane
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>


-- 
Loïc Hoguin
Erlang Cowboy
Nine Nines
http://ninenines.eu



More information about the erlang-questions mailing list