在每个C#应用程序中可以找到哪些信息可用作加密的唯一盐?

Nin*_*oel 7 c# dpapi

在每个C#应用程序中可以找到哪些信息可用作加密的唯一盐,包括Web应用程序,Windows服务和wcf层?

我想创建一个库,允许使用(DPAPI)System.Security.Cryptography.ProtectedData.Protect()System.Security.Cryptography.ProtectedData.Unprotect()方法轻松加密存储在配置文件中的敏感数据.

该库也将由我正在制作的单独应用程序使用,它可以加密和解密使用这些值的应用程序之外的配置值,允许更新配置文件而无需重新编译所有内容或需要访问原始源,尽管访问源应始终可用.

salt必须足够简单,以便在单独的应用程序中手动输入(例如,GUID很难识别).

System.Reflection.Assembly.GetEntryAssembly()看起来很有希望,如果那是调用我正在制作的这个库的应用程序/服务的程序集,我可以在那里使用一些东西.首先想到的是"将加密数据存储在配置文件名中的盐...",但对于网站,配置文件始终是"web.config".

欢迎任何其他想法.

更新...

'GetExecutingAssembly()'...与'GetEntryAssembly()'有何不同?

Luk*_*ley 1

每个应用程序/程序集都有一个版本号,这可能是一个选项。

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)