我需要在性能关键环境中使用MessageDigest从多个线程中散列多个键.我开始知道MessageDigest不是线程安全的,因为它将状态存储在它的对象中.什么是实现密钥线程安全散列的最佳方法?
使用案例:
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
//somewhere later, just need to hash a key, nothing else
messageDigest.update(key);
byte[] bytes = messageDigest.digest();
Run Code Online (Sandbox Code Playgroud)
特别:
我的用例非常简单 - 只需哈希一个简单的密钥.我不能使用同步.
谢谢,
我正在编写一个C#库,供本机C++应用程序使用.我使用C++/CLI作为互操作性机制.
我需要将回调函数从C++传递给C#(使用C++/CLI作为中间层).C#库需要使用零终止的宽字符串来调用C++函数; 即回调函数的原型是
Func(LPCWSTR pszString);
还有其他参数,但它们对于这个讨论并不重要.
我搜索网,发现Marshal.GetDelegateForFunctionPointer方法,我可以使用.这个问题是它将System.String从C#转换为char*而不是我正在寻找的wchar_t*.
此外,如果可能的话,实现此代码示例的最佳方法是什么,包括C++/CLI部分.C++/CLI dll依赖于C#dll.方法需要同步调用.