不使用 EntLibConfig.exe 恢复 RijndaelManaged 密钥
Restore RijndaelManaged key without using EntLibConfig.exe
我正在使用一个较旧的应用程序,它使用企业库加密应用程序块进行数据加密。
目前,我们必须手动 运行 EntLibConfig.exe(一个 ui 应用程序),导入从另一台机器导出的密钥,然后恢复密钥新服务器。
这个手动过程需要取消。有没有办法可以使用命令行重新创建此密钥?也许通过编写应用程序来生成密钥?我没有运气使用 .NET 文档中的 RijndaelManaged 引用解决这个问题。
使用对称提供程序,RijndaelManaged。
实际上,任何基于当前密钥恢复 RijndaelManaged 密钥的解决方案都可能有用。没有用户界面或手册 processes/clicks!
在阅读企业库源代码一段时间后,我想出了一个方法来做到这一点。这只是 POC 代码,没有检查等
假设:
c:\key\engagementproviderexport.txt
是从工作服务器导出的密钥
c:\key\engagementprovider.key
是为新机器新建的 RijndaelManaged key
exportKeyPw
是用来保护导出密钥的密码
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
添加参考
System.Security.dll
添加参考
ProtectedKey
是 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.ProtectedKey class
KeyManager
是 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.KeyManager 静态的 class,它在这里完成所有工作!
POC:
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using System.Security;
using System.IO;
string exportKeyFile = @"C:\key\EngagementProviderExport.txt";
string exportKeyPw = "p@ssword";
string saveKeyFile = @"C:\key\EngagementProvider.key";
ProtectedKey NewServerKey;
using (FileStream fs = File.OpenRead(exportKeyFile))
{
NewServerKey = KeyManager.RestoreKey(fs, exportKeyPw, System.Security.Cryptography.DataProtectionScope.LocalMachine);
}
using (FileStream ofs = File.OpenWrite(saveKeyFile))
{
KeyManager.Write(ofs, NewServerKey);
}
我正在使用一个较旧的应用程序,它使用企业库加密应用程序块进行数据加密。
目前,我们必须手动 运行 EntLibConfig.exe(一个 ui 应用程序),导入从另一台机器导出的密钥,然后恢复密钥新服务器。
这个手动过程需要取消。有没有办法可以使用命令行重新创建此密钥?也许通过编写应用程序来生成密钥?我没有运气使用 .NET 文档中的 RijndaelManaged 引用解决这个问题。
使用对称提供程序,RijndaelManaged。
实际上,任何基于当前密钥恢复 RijndaelManaged 密钥的解决方案都可能有用。没有用户界面或手册 processes/clicks!
在阅读企业库源代码一段时间后,我想出了一个方法来做到这一点。这只是 POC 代码,没有检查等
假设:
c:\key\engagementproviderexport.txt
是从工作服务器导出的密钥c:\key\engagementprovider.key
是为新机器新建的 RijndaelManaged keyexportKeyPw
是用来保护导出密钥的密码Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
添加参考System.Security.dll
添加参考ProtectedKey
是 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.ProtectedKey classKeyManager
是 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.KeyManager 静态的 class,它在这里完成所有工作!
POC:
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using System.Security;
using System.IO;
string exportKeyFile = @"C:\key\EngagementProviderExport.txt";
string exportKeyPw = "p@ssword";
string saveKeyFile = @"C:\key\EngagementProvider.key";
ProtectedKey NewServerKey;
using (FileStream fs = File.OpenRead(exportKeyFile))
{
NewServerKey = KeyManager.RestoreKey(fs, exportKeyPw, System.Security.Cryptography.DataProtectionScope.LocalMachine);
}
using (FileStream ofs = File.OpenWrite(saveKeyFile))
{
KeyManager.Write(ofs, NewServerKey);
}