ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
```erlang crypto:hash(md5, Bin||Str). md5_to_str(Str) -> <<Mac:128/integer>> = erlang:md5(Str), lists:flatten(io_lib:format("~32.16.0b", [Mac])). md5(S) -> Md5_bin = erlang:md5(S), Md5_list = binary_to_list(Md5_bin), lists:flatten(list_to_hex(Md5_list)). list_to_hex(L) -> lists:map(fun(X) -> int_to_hex(X) end, L). int_to_hex(N) when N < 256 -> [hex(N div 16), hex(N rem 16)]. hex(N) when N < 10 -> $0 + N; hex(N) when N >= 10, N < 16 -> $a + (N - 10). md5_to_str(Str) -> <<M:128/integer>> = erlang:md5(Str), Integer_to_hex( M, 32 ). integer_to_hex(I, Len) -> Hex = string:to_lower(erlang:integer_to_list(I, 16)), LenDiff = Len - length(Hex), case LenDiff > 0 of true -> string:chars($0, LenDiff) ++ Hex; false -> Hex end. hex_to_integer(Hex) -> lists:foldl (fun (E, Acc) -> Acc * 16 + dehex (E) end, 0, Hex). 加密模块,常见的加密算法 <<Mac:160/integer>> = crypto:sha("aabbcc"). lists:flatten(io_lib:format("~40.16.0b", [Mac])). 5> <<Mac:160/integer>> = crypto:sha_mac("aabbcc", "ddeeff"). <<156,97,184,203,233,133,139,40,205,53,140,142,128,72,34,   38,248,183,32,69>> 6> lists:flatten(io_lib:format("~40.16.0b", [Mac])). "9c61b8cbe9858b28cd358c8e80482226f8b72045" crypto:rand_uniform(A,B) 1> <<Mac:128/integer>> = erlang:md5( "123456" ).    %md5加密返回128位的密文,使用变量Mac去匹配该128位的密文 2> lists:flatten(io_lib:format("~32.16.0b", [Mac])).    %格式化"~32.16.0b"的含义,输出的用长度length为32,转化为16进制,转化时如果遇到空的位,使"0"填充,b输出的英文小写字母,B输出大写字母    %完整的格式化"~Length.P.PadC"        Length输出宽度        P输出精度        Pad填充字符        C是控制字符 "e10adc3949ba59abbe56e057f20f883e" ```