2013-04-20 24 views
5

Trong ứng dụng cửa sổ của tôi, tôi đang cố gắng để mã hóa chuỗi phần kết nối của app.config file, chuỗi kết nối một phần của file app.config của tôi làKhông thể giải mã bằng cách sử dụng nhà cung cấp 'RsaProtectedConfigurationProvider'?

<connectionStrings> 
<add name="SQLiteDB" connectionString="Data Source=|DataDirectory|database.s3db;  
Version=3;password=mypassword;" providerName="System.Data.Sqlite"/> 
</connectionStrings> 

và trong cs nộp tôi đang mã hóa nó như

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
ConfigurationSection section = config.GetSection("connectionStrings") as ConnectionStringsSection; // could be any section 

if (!section.IsReadOnly()) 
{ 
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); 
section.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Full); 
} 

sau khi chạy mã này tôi nhận được chuỗi kết nối được mã hóa trong app.config khác, app.config này nằm trong thư mục bin \ debug và tên của tệp .config này là nameofapplication.exe.config.

Vấn đề là khi tôi đã thiết lập của ứng dụng này và chạy trên máy tính khác nếu cho lỗi rằng:

System.Configuration.ConfigurationErrorsException: Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened. 

tôi đang làm nó lần đầu tiên do đó, không biết làm thế nào để giải quyết này, stucked nặng trong nó.

Trả lời

3

Tệp app.config sẽ được mã hóa bằng chứng chỉ trên máy cục bộ của bạn. Chứng chỉ này sẽ không xuất hiện trên máy khác. Do đó, bạn sẽ không thể giải mã tệp app.config.

Để làm việc này, bạn cần xuất khóa mã hóa trên máy của mình, sau đó nhập khóa trên máy khác. Bài viết sau đây cho thấy làm thế nào để làm điều đó: Walkthrough: Creating and Exporting an RSA Key Container

+0

FYI, HOẶC có thể về ngay cả khi bạn nhập khẩu những chìa khóa để các máy khác, trong trường hợp của tôi về phép. Khi tôi gỡ lỗi trên VS không thể giải mã nhưng sau khi tôi mở VS với tư cách quản trị viên. Bắt đầu giải mã nó. – enterbutton

6

Sử dụng lệnh này aspnet_regiis

C:\Windows\system32>aspnet_regiis -pa "NetFrameworkConfigurationKey" "myDomain\myUser" 
Microsoft (R) ASP.NET RegIIS versión 4.0.30319.33440 
Utilidad de administración que instala y desinstala ASP.NET en el equipo local. 
Copyright (C) Microsoft Corporation. Todos los derechos reservados. 
Agregando ACL para el acceso al contenedor de claves RSA... 
Con éxito 

Nhiều tài liệu tham khảo như Administrator- -PA

mở cmd điều khiển -execute:

Ɖiamond ǤeezeƦ answer

The RsaProtectedConfigurationProvider sometimes fails when encrypting an application configuration file

ASP.NET Encryption - aspnet_regiis - Farm

Encrypting and Decrypting Web.config Sections in .NET 4.0

+0

Kiquenet bạn đã cứu ngày của tôi! Sau khi nâng cấp máy tính xách tay của tôi từ Win7 lên Win10, tôi vẫn gặp phải lỗi này. Tất cả những gì tôi phải làm là chạy 'aspnet_regiis'as được mô tả. Bây giờ tất cả hoạt động như một charme một lần nữa! –