Erlang:crypo的问题:sha()

时间:2011-07-27 21:01:06

标签: erlang

这适用于我的erlang shell:

1> U = default_user_name().
2> crypto:start().
3> crypto:sha(U).
4> crypto:stop().

但是当我编译它时:

default_pw() ->
    U = default_user_name(),
    crypto:start(),
    crypto:sha(U),
    crypto:stop().

在erlang shell中执行它,我得到了这个:

1>人:default_pw()

**异常错误:错误的参数

 in function  port_control/3

    called as port_control(crypto_drv04,5,<<"jDoe">>)

 in call from crypto:control/2

两个问题:

1)我做错了什么?

2)似乎我需要启动和停止加密服务器。但是在我的应用程序中有没有更好的起点和停止位置?

非常感谢,

LRP

1 个答案:

答案 0 :(得分:4)

您收到的错误表明加密应用程序未启动。一个简单的启动方法就是将它作为参数添加到erl,如下所示:

$ erl -s crypto

我看了一下crypto的当前实现和过去的erlang发行说明,我得出了以下结论(如果我错了,有人请纠正我):

  1. Erlang发布&lt; 14A要求在调用任何函数之前启动加密,因为库使用了端口驱动程序。这是有道理的,因为我在没有启动加密后得到了你用13B04描述的错误。
  2. Erlang版本&gt; = 14A不需要启动加密,因为实现现在使用NIF。这是有道理的,因为crypto_server.erl的当前实现只是gen_server模板,而在14B03我不需要启动应用程序以使crypto:sha/1工作。