第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法使用 NCryptExportKey 和 NCryptImportKey 重新導(dǎo)入私鑰

無(wú)法使用 NCryptExportKey 和 NCryptImportKey 重新導(dǎo)入私鑰

C#
慕勒3428872 2023-05-13 15:55:13
我正在嘗試重新加載具有不同導(dǎo)出策略的證書(shū)私鑰以解決此問(wèn)題。我重復(fù)使用此答案中的代碼來(lái)導(dǎo)出私鑰,然后將其導(dǎo)入并將導(dǎo)出策略設(shè)置為 AllowPlainTextExport。有了它,我應(yīng)該能夠用重新導(dǎo)入的私鑰重建原始證書(shū),并在必要時(shí)導(dǎo)出其參數(shù)。這是我現(xiàn)在擁有的代碼:證書(shū)被導(dǎo)出然后導(dǎo)入。但是,導(dǎo)入的私鑰不能重新分配給原始證書(shū)。我收到“提供的密鑰與此證書(shū)的公鑰不匹配”或“僅支持實(shí)現(xiàn) ICspAsymmetricAlgorithm 的非對(duì)稱密鑰”。我做錯(cuò)了什么嗎?
查看完整描述

1 回答

?
交互式愛(ài)情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

// Attempt #1


CspParameters parameters = new CspParameters();

parameters.KeyContainerName = importedKeyName;

var rsaKey = new RSACryptoServiceProvider(parameters);

certificate.PrivateKey = rsaKey; // public key doesn't match the private key

CAPI(CspParameters 背后的庫(kù))在 Windows 7 或 8.1 上根本無(wú)法理解 CNG 中的鍵;它(理論上)在 10 上支持它,但您肯定必須告訴它密鑰位于 CNG (CspParameters.ProviderName) 中。


此處的代碼在“Microsoft RSA 和 AES 增強(qiáng)型加密服務(wù)提供程序”中使用 ProviderType 24 創(chuàng)建了一個(gè)新的 CAPI 密鑰,該密鑰恰好與您的 CNG 密鑰具有相同的本地密鑰名稱。


您沒(méi)有指定標(biāo)志 UseExistingOnly,并且該密鑰不存在,所以它創(chuàng)建了一個(gè)新的……這就是公鑰與證書(shū)中的內(nèi)容不匹配的原因。


// Attempt #2


var rsaCngKey = new RSACng(CngKey.Open(importedKeyName));

certificate.PrivateKey = rsaCngKey; // Only asymmetric keys that implement ICspAsymmetricAlgorithm are supported.

該P(yáng)rivateKey屬性只支持 CAPI,無(wú)論是 get 還是 set。該集合使用起來(lái)非常危險(xiǎn),因?yàn)樗粫?huì)修改證書(shū)對(duì)象,它會(huì)修改 Windows 證書(shū)存儲(chǔ)系統(tǒng)中證書(shū)的狀態(tài)……這意味著它還會(huì)影響在同一對(duì)象上運(yùn)行的任何其他現(xiàn)在或?qū)?lái)的對(duì)象(Windows) 證書(shū)。


// Attempt #3

certificate.PrivateKey = null;

X509Certificate2 certWithKey = certificate.CopyWithPrivateKey(rsaKey); // The provided key does not match the public key for this certificate.

這是從嘗試 1 創(chuàng)建的相同的新隨機(jī)密鑰。


如果您刪除嘗試 1,然后合并 2 和 3,您應(yīng)該以


var rsaCngKey = new RSACng(CngKey.Open(importedKeyName));

X509Certificate2 certWithKey = certificate.CopyWithPrivateKey(rsaCngKey);

這應(yīng)該有效。(如果您已經(jīng)將證書(shū)導(dǎo)入到證書(shū)存儲(chǔ)中,您可以只添加certWithKey到證書(shū)存儲(chǔ)中,這將具有與“每個(gè)人都突然知道這個(gè)”更新更改相同的更新更改cert.set_PrivateKey,除了您詢問(wèn)證書(shū)存儲(chǔ)更明顯進(jìn)行更改)


查看完整回答
反對(duì) 回復(fù) 2023-05-13
  • 1 回答
  • 0 關(guān)注
  • 375 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)