我一直有这个问题。
此平台不支持指定的加密算法。
异常详细信息:System.PlatformNotSupportedException:此平台不支持指定的加密算法。
以下是代码。在安装了3.5框架的Windows XP Pro SP3和Windows 2003 Server上,此代码失败。
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System"%>
<%@ Import Namespace="System.Web"%>
<%@ Import Namespace="System.Security.Cryptography"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<%
//http://blogs.msdn.com/b/shawnfa/archive/2007/01/22/elliptic-curve-diffie-hellman.aspx
//http://msdn.microsoft.com/en-us/library/cc488021.aspx is about 200-millisecond wait.
ECDiffieHellmanCng alice = new ECDiffieHellmanCng();
alice.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
alice.HashAlgorithm = CngAlgorithm.Sha256;
ECDiffieHellmanCng bob = new ECDiffieHellmanCng();
bob.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
bob.HashAlgorithm = CngAlgorithm.Sha256;
byte[] bobKey = bob.DeriveKeyMaterial(alice.PublicKey);
byte[] aliceKey = alice.DeriveKeyMaterial(bob.PublicKey);
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = aliceKey;
%>
</body>
</html>
答案 0 :(得分:1)
MSDN表示以下操作系统支持该类:
答案 1 :(得分:1)
基于阅读其他Microsoft文档,我自己的实验和提问者,我确信MSDN文档存在错误,并且Elliptic Curve DH仅在Windows Vista及更高版本上受支持。 ECDH仅受Windows CNG支持,而CNG只能在Vista及更高版本上使用。我希望被证明是错的。
答案 2 :(得分:0)
这可能是由于操作系统的差异造成的。您尝试运行的代码可能仅适用于某些Windows操作系统,或仅适用于64位或仅适用于32位计算机。你有这个算法的文档&gt;?