注意を得ることができますですが、SHA256、以下の例で動作します:
「指定された無効なアルゴリズム」私を永遠に理解することができました。私は事実上すべてを試しました。 Gonzalo Gallottiの小道具で、私を助けたコードへのリンクを投稿しました。私は各ステップが何をしているのかを示すために自分のコードにコメントしました。注:このコードは、コードサンプルの下に掲載されて適切に生成された証明書なしでは動作しません。
public void GetCertificate() {
// Get the Machine Cert Store
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
string alg = CryptoConfig.MapNameToOID("SHA512");
// Open the cert store
store.Open(OpenFlags.ReadWrite);
// Loop through each certificate within the store
foreach (X509Certificate2 myCert in store.Certificates)
{
// Get the certificate we are looking for
if (myCert.IssuerName.Name.Contains("CN=YourSite"))
{
// Check if the certificate has a private key
if (myCert.HasPrivateKey)
{
// Get your custom signature as a string
string mySignature = GetSignatureString();
// Convert signature to byte array
byte[] originalData = Encoding.UTF8.GetBytes(mySignature);
// Create RSA provider from private key
RSACryptoServiceProvider rsaProvider = (RSACryptoServiceProvider)myCert.PrivateKey;
// Sign the signature with SHA512
byte[] signedSignature = signedSignature = rsaProvider.SignData(originalData, alg);
if (rsaProvider.VerifyData(originalData, alg, signedSignature))
{
// Signature is verified Do Stuff
}
else
{
throw new Exception("The data does not match the signature.");
}
}
}
}
}
次 - 証明書は、SHA512を可能とSHA512ことが可能であることをCSP(暗号化サービスプロバイダ)を使用する必要があります。ここにCSPとその機能のリストがあります。 SHA512を探す場合は、「Microsoft Enhanced RSA and AES Cryptographic Provider」があります。デフォルトでは、証明書を生成する際に(少なくともWindowsでは)これを使用しないので、証明書を作成するときに証明書を指定する必要があります。
秘密鍵と証明書を作成する - このステップはあなたに質問をします、状態、地域をなどなど
openssl req -x509 -nodes -sha512 -newkey rsa:2048 -keyout 512key.pem -out 512cert.pem -days 3650
Microsoft拡張RSAとAES暗号化プロバイダを使用して、証明書ストアにインポートするPFXファイルを作成します。
openssl pkcs12 –export –in 512cert.pem –inkey 512key.pem –CSP “Microsoft Enhanced RSA and AES Cryptographic Provider” –out 512pfx.pfx
'id'の値は何ですか? – dtb
私はidの値で質問を更新しました。 – scott