RandomNumberGenerator.GetBytes抛出“无法加载DLL'BCrypt.dll'”

时间:2017-03-16 03:56:24

标签: c# .net .net-core aws-lambda

我使用.NET核心创建了一个aws Lambda函数。运行lambda函数时,我收到以下错误:

  

(无法加载DLL'BCrypt.dll':找不到指定的模块。   (来自HRESULT的异常:0x8007007E)):AggregateException   在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)   在System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)   在lambda_method(Closure,Stream,Stream,ContextInfo)   在Interop.BCrypt.BCryptGenRandom(IntPtr hAlgorithm,Byte * pbBuffer,Int32 cbBuffer,Int32 dwFlags)   在Interop.BCrypt.BCryptGenRandom(Byte [] pbBuffer,Int32 cbBuffer)   在System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(Byte [] data)   在User.Util.GetSalt(ILambdaContext上下文)   在User.Functions.d__1.MoveNext()

从以下代码抛出:

public static string GetSalt()
{
    byte[] bytes = new byte[128 / 8];

    using(var keyGenerator = RandomNumberGenerator.Create())
    {
        keyGenerator.GetBytes(bytes);
        return BitConverter.ToString(bytes).Replace("-", "").ToLower();
    }
}        

这行代码破了:     keyGenerator.GetBytes(bytes);

我相信.net核心应该可以跨平台工作(因为aws使用的是unix机器)。

从我在网上找到的所有内容来看,这似乎是最好的方法。

0 个答案:

没有答案