C# 加密注册表内容

C# 加密注册表内容,c#,encryption,registry,C#,Encryption,Registry,我正在使用包含一些重要数据的代码生成*.reg文件。用户将把它保存到注册表中 在应用程序启动时,我从注册表中获取值并执行一些验证 但问题是,在注册表和*.reg文件中,信息以纯文本形式存储 如何首先创建加密的*.reg文件 然后在应用程序中启动。如何从注册表解密值(加密) 我读了一些文章。但它们与文件的加密/解密有关。 在这里,我使用“*.reg”文件和注册表本身如果您的程序是唯一一个从注册表读取值的程序,您可以在每次使用时对其进行加密和解密。 这样导出的.reg文件也将包含加密数据 如果有其他

我正在使用包含一些重要数据的代码生成*.reg文件。用户将把它保存到注册表中

在应用程序启动时,我从注册表中获取值并执行一些验证

但问题是,在注册表和*.reg文件中,信息以纯文本形式存储

如何首先创建加密的*.reg文件

然后在应用程序中启动。如何从注册表解密值(加密)

我读了一些文章。但它们与文件的加密/解密有关。
在这里,我使用“*.reg”文件和注册表本身

如果您的程序是唯一一个从注册表读取值的程序,您可以在每次使用时对其进行加密和解密。 这样导出的.reg文件也将包含加密数据


如果有其他程序使用这些数据,您必须确保他们能够访问和理解所需的信息。

如果您的程序是唯一一个从注册表读取值的程序,则每次使用时您都可以对其进行加密和解密。 这样导出的.reg文件也将包含加密数据


如果有其他程序使用这些数据,您必须确保他们能够访问和理解所需的信息。

这有什么意义?任何人都可以使用像Regmon这样的工具来找出您设置的值


相反,您应该只加密这些值,并在应用程序读取这些值时解密它们(假设只有您的应用程序访问这些数据)。但是请记住,您必须将解密密钥存储在可执行文件中的某个位置,这将打开一整罐蠕虫。

这有什么意义?任何人都可以使用像Regmon这样的工具来找出您设置的值


相反,您应该只加密这些值,并在应用程序读取这些值时解密它们(假设只有您的应用程序访问这些数据)。但是请记住,您必须将解密密钥存储在可执行文件中的某个位置,这将打开一整罐蠕虫。

您将无法透明地加密注册表

我将研究公钥/私钥或对称密钥加密方法

下面是一个使用RSA的快速项目:


将密钥存储在资源中可能是保护内容的最佳方式,但请注意:如果将密钥和密码文本存储在同一系统上(例如,在程序和注册表中)无法完全阻止系统所有者读取明文。

您将无法透明地加密注册表

我将研究公钥/私钥或对称密钥加密方法

下面是一个使用RSA的快速项目:


将密钥存储在资源中可能是保护内容的最佳方式,但请注意:如果将密钥和密码文本存储在同一系统上(例如,在程序和注册表中),则无法完全阻止系统所有者读取明文。

抱歉,莫桑,这是错误的方式。D显示了正确的方式

想象一下,如果你加密一个.reg文件。之后会发生什么??您希望将其导入注册表,但在此之前,您必须对其进行解密,这样只有纯文本进入注册表,每个人都可以读取

所以不要加密密钥或值名。在注册表中加密值的内容。因此,您的程序可以读入、解密并使用它。以下是一个例子:

[HKLM\Key\SubKey\SubSubKey\etc]
@=""
"Password"="KALSDJLSIWNKLDNISNDLKWDNLAW"

因此,您的程序打开密钥,读取值并计算该值的解密算法,将其解析为:“我的秘密密码”

对不起,莫桑,这是错误的方法。D显示了正确的方式

想象一下,如果你加密一个.reg文件。之后会发生什么??您希望将其导入注册表,但在此之前,您必须对其进行解密,这样只有纯文本进入注册表,每个人都可以读取

所以不要加密密钥或值名。在注册表中加密值的内容。因此,您的程序可以读入、解密并使用它。以下是一个例子:

[HKLM\Key\SubKey\SubSubKey\etc]
@=""
"Password"="KALSDJLSIWNKLDNISNDLKWDNLAW"
因此,程序打开密钥,读取值并计算该值的解密算法,将其解析为:“我的秘密密码”