此平台不支持Diffie-Hellman加密算法

时间:2010-07-07 21:24:51

标签: c#

我一直有这个问题。

  

此平台不支持指定的加密算法。

     

异常详细信息: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>

3 个答案:

答案 0 :(得分:1)

MSDN表示以下操作系统支持该类:

  • Windows 7
  • Windows Vista SP1或更高版本
  • Windows XP SP3
  • Windows Server 2008 (不支持服务器核心角色)
  • Windows Server 2008 R2(服务器核心 角色不受支持)

答案 1 :(得分:1)

基于阅读其他Microsoft文档,我自己的实验和提问者,我确信MSDN文档存在错误,并且Elliptic Curve DH仅在Windows Vista及更高版本上受支持。 ECDH仅受Windows CNG支持,而CNG只能在Vista及更高版本上使用。我希望被证明是错的。

答案 2 :(得分:0)

这可能是由于操作系统的差异造成的。您尝试运行的代码可能仅适用于某些Windows操作系统,或仅适用于64位或仅适用于32位计算机。你有这个算法的文档&gt;?