调用crypto的错误参数:aes_cfb_128_crypt

时间:2016-05-07 13:45:53

标签: erlang

这是第461行的代码片段,它给出了badarg错误,请帮我解决这个错误。

ejabberd_odbc:escape(base64:encode(crypto:aes_cfb_128_encrypt(<<"abcdefghabcdefgh">>, <<"12345678abcdefgh">>, xml:element_to_binary(NewPacket)))),

日志:

调用加密的错误论据:aes_cfb_128_crypt(&lt;&lt;&lt;&#;&#34; abcdefghabcdefgh&#34;&gt;&gt;,&lt;&lt;&#; 12345678abcdefgh&#34;&gt;&gt;,&lt;&lt; &#34;&gt;,true)在mod_offline中:&#39; -store_offline_msg / 6-fun-2 - &#39; / 2第225行

1 个答案:

答案 0 :(得分:1)

我喜欢功能语言的一个方面是,您通常可以更轻松地在受控环境中重现错误。在你的情况下,似乎

base64:decode(XML)

是失败的电话,所以你应该写

io:format("XML=~p~n", [XML]),
base64:decode(XML)

第一行将在Erlang语法中打印出XML的内容,当您遇到错误输入时,第二行将失败。

一旦你看到你想要解码的字符串,问题可能就很明显了(它不是字符串,也不是base64字符串)。如果正确编码的base64字符串,那么您可以将该问题作为StackOverflow问题发布并获得更有用的响应。