SHA1算法(以及整个Cryptography命名空间)在Visual Studio 2012中缺失。

7

我从MSDN复制了这段代码:

using System.Security.Cryptography;

byte[] buffer = enc.GetBytes(text);
SHA1CryptoServiceProvider cryptoTransformSHA1 =
            new SHA1CryptoServiceProvider();
string hash = BitConverter.ToString(
            cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", "");

return hash;

但是VS说没有这个Cryptography命名空间,因此也就没有SHA1CryptoServiceProvider类。

我做错了什么?

我使用的是Dreamspark许可证的Visual Studio Professional 2012 RC和Windows 8 Release Preview。


你能给我那段代码的链接吗? - Ali Vojdanian
在那里。请参见MSDn http://msdn.microsoft.com/en-us/library/system.security.cryptography(v=vs.110).aspx - Romil Kumar Jain
可能我没有解释清楚,我的意思是VS说找不到那个类或命名空间。 - Guillermo Orellana Ruiz
2
您是否只是缺少对 System.Security 的引用? - infojolt
刚刚编辑了一下,标注了实际的问题。 - Guillermo Orellana Ruiz
4个回答

5
答案就像Anders Gustafsson所指出的那样,在Metro中,不支持System.Security.Cryptography。但是你可以使用Windows.Security.Cryptography代替它。

是的,我看到了,但第一次没有仔细看。感谢您指出。为了完整起见,我更新了我的答案,并附上了一些MSDN文档的链接。 - Anders Gustafsson

5

我猜你正在尝试创建一个Metro应用程序?Metro风格的应用程序不支持System.Security.Cryptography命名空间。Metro应用程序所支持的完整.NET API命名空间列表可以在此处找到here

更新于6月29日

正如Guillermo所指出的那样,有Windows.Security.Cryptograhy.Core命名空间,其中包含一个HashAlgorithmProvider类,例如可以应用SHA1算法。


2
这怎么可能?这是否意味着如果我想要一个Metro应用程序,就不能再使用SHA-1了? - sharptooth

1

0

仍然存在同样的问题,缺少“Cryptography”命名空间。 - Guillermo Orellana Ruiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接