2010-11-26 6 views
1

私は提供された秘密鍵とハッシュ値から署名を作成しようとしています。 DSAと次のコードを使用していますが、次のエラーが表示されます。秘密鍵から署名を作成するには? - DSA

無効な種類が指定されています。エラーがこの行にスローされる ソースmscorlib

:ImportCspBlob(PK)

Private Function key() As String 

     Dim privatekey As String = "-----BEGIN DSA PRIVATE KEY-----" _ 
     & "Key Data" 
     & "-----END DSA PRIVATE KEY-----" 

     Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider() 
     Dim pk As Byte() = Encoding.ASCII.GetBytes(privatekey) 

     dsa.ImportCspBlob(pk) 
     Dim st As Byte() = Encoding.ASCII.GetBytes("THIS IS THE HASH STRING"))) 
     Dim signedValue As Byte() = dsa.SignHash(st, "SHA1") 

     Return Encoding.ASCII.GetString(signedValue) 

    End Function 

私はここに右の行にしていますか私は道出ていた場合に誰も教えてもらえますか?

これに関するお手伝いがあれば幸いです。

答えて

1

PEMエンコードされたオブジェクトは、主にOpenSSL固有の形式でプライベートキーとして使用されています。そのルートでは、ASN.1ベースの構造であり、DERでエンコードされ、次にBase64で再エンコードされ(ASCII互換にする)、最終的にいくつかのヘッダー(「BEGIN DSAプライベートキー」)が装備されます。一方、ImportCsbBlob()は、CryptoAPI expectsと互換性のある一連のバイトを想定しています。これは、Microsoft固有のDSAキー要素のエンコーディングです。

1つのエンコーディングから別のエンコーディングへの変換がであるという事実を強調するために、上記の段落で頭字語を使用しました。それらは重く重なり合っており、互いに非常に異なっています。

This blob post最近のバージョンのOpenSSLは、あなたのために変換を行うことができます。

関連する問題