Zip 파일과 그 내용에 서명하기 위해 PackageDigitalSignatureManager를 사용하고 있습니다. 갑자기 4.6.2을 .NET으로 업데이트 될 때까지 내 코드는 괜찮 았는데 내가 얻을 다음 expection :RSACryptoServiceProvider "Key does not exist"on .Net 4.6.2
System.Security.Cryptography.CryptographicException: Key does not exist
bei System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
bei System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
bei System.Security.Cryptography.RSACryptoServiceProvider.SignHash(Byte[] rgbHash, Int32 calgHash)
bei System.Security.Cryptography.RSAPKCS1SignatureFormatter.CreateSignature(Byte[] rgbHash)
bei System.Security.Cryptography.AsymmetricSignatureFormatter.CreateSignature(HashAlgorithm hash)
bei System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
bei MS.Internal.IO.Packaging.XmlDigitalSignatureProcessor.Sign(IEnumerable`1 parts, IEnumerable`1 relationshipSelectors, X509Certificate2 signer, String signatureId, Boolean embedCertificate, IEnumerable`1 signatureObjects, IEnumerable`1 objectReferences)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors, String signatureId, IEnumerable`1 signatureObjects, IEnumerable`1 objectReferences)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors, String signatureId)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors)
인증서와 내가 사용하고있는 개인 키뿐만 아니라 내가으로 변경하지 않은 사용하는 코드 서명 모두 지난 달에. 유일한 변경 사항은 .Net 4.6.2 로의 전환입니다.
내가이 기사를 찾을 때까지 무슨 일이 일어 났는지 확신 할 수 없었습니다. https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/ 그들은 변화하는 인증서와 서명 코드에 대해 언급했지만, 정확히 무엇이 파산되었는지는 잘 모르겠습니다.
누구든지 해결할 수있는 아이디어가 있습니까? 내 응용 프로그램을 이전 버전과 호환되도록 실행할 수 있습니까? 당신이 CspParameters를 지정해야 RSACryptoServiceProvider의 인스턴스를 만들 때
난 당신이 최소한의 생식이 생각하지? 그 업그레이 드는 멀리 예외를 걸릴해야합니다, 그들을 추가하지 ... – bartonjs
그게 무슨 생각이지만, 적어도 내 경우에는 그런 것 같지 않습니다. 현재이 코드는 제공 할 수없는 다른 코드로 뒷받침됩니다. 앞으로 더 많이 분리하려고 노력할 것입니다. – Bluuu