Entity Framework connectionstring 怎么加密=解密

Entity Framework connectionstring 怎么加密=解密,第1张

在WEB网站开发过程中,如果我们将数据库连接字符串封装到DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或

者数据库发生变更,那么我们就不得不修改源程序并重新将其编译。更好的解决方法是将数据库连接字符串写入到webconfig配置文件中,可问题是将连

接字符串写入到webconfig文件中之后,任何人都能打开看到所连接的数据库名和密码,又会带来安全隐患,因此为了保证数据库的安全性,我们可以通

过使用微软IDE自带的命令aspnet_regiisexe将配置文件webconfig中指定的标签进行加密,如果以后想查看加密后的连接字符

串,我们还可以使用aspnet_regiisexe将加密后的字符串进行解密。

1 加密通用语法

加密一个特定网站的webconfig文件的通用形式

aspnet_regiisexe -pef secion physical_directory -prov provider

aspnet_regiisexe -pe secion -app virtual_directory -prov provider

其中,各个参数的含义如下:

section表示要加密的配置节

physical_directory用于指定站点的物理路径。

virtual_directory用户指定虚拟路径。

provider指定加密提供程序。

加密一个特定站点的连接字符串就是:

aspnet_regiisexe -pef "connectionStrings" "你的web项目路径" -prov "DataProtectionConfigurationProvider"

其中DataProctionConfiguartionProvider是Windows数据保护API(DPAPI)提供程序,它使用Windows内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。

2 加密方法

运行Visual Studio 2008命令提示

加密后的结果

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">

<EncryptedData>

<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>

</CipherData>

</EncryptedData>

lt;/connectionStrings>

3 解密

解密该连接字符串也很简单

aspnet_regiisexe -pdf "connectionStrings" '你的web项目路径"

解密后的结果:

<connectionStrings>

<add name="Sql" connectionString="Data Source=;Initial Catalog=MySchool;Integrated Security=True" />

</connectionStrings>

4 后台代码读取配置文件webconfig中数据库连接字符串的方法:

using SystemConfiguation;

protected void Page_Load(object sender, EventArgs e)

{

lblMessageText = ConfigurationManagerConnectionStrings["Sql"]ToString();

}

5 在连接字符串的加密和解密的过程中,需要注意一下几点。

使用加密的连接字符串

使用加密的连接字符串不需要编码解密,ASPNET会自动对加密内容进行解密。

加密和解密在同一台计算机上使用

在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。

中文路径问题

该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。

MD5的加密是不可逆转的,是为了保证文件的正确性,防止一些人盗用程序。而且不同的字符串加密后结果可能一样,但是几率非常小。

MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。

MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readmetxt文件中,并对这个readmetxt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

MD5还广泛用于加密和解密技术上,在很多 *** 作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

将那个字段设为主键

------解决方案--------------------------------------------------------

要不然

你只能在逻辑上做判断、先查询数据是否有当前的符号、如果有

就另填。没有的话,就插入

------解决方案--------------------------------------------------------

------解决方案--------------------------------------------------------

要是这个字段不是外键的话,可以设成主键,否则,可以由数据库的标识字段做主键,给这一列

加上唯一约束

------解决方案--------------------------------------------------------

主键或者unique

约束(这个oracle

有,不知sqlserver

有没有)。

这个好像不行吧。

------解决方案--------------------------------------------------------

设主键。用sequence

自增。设置主键

然后也可以写触发器做判断修改

是解不了的,网络上所谓的解密都是骗人的;

所谓的破解,都是利用MD5加密后,粘贴出来的,譬如密码123456经过MD5加密后,把那一串字符存到数据库里,当有人试着在线解码的时候,正好是这个,就是所谓的可以解码;

实际是,无法解码的,智能重置密码

楼主是想在WEBCONFIG文件中加密数据库联接字符串吧

webconfig中加密连接字符串

旧版本的ASPNET将连接字符串直接保存在ASPX页面中。回想一下,连接字符串包含了数据服务器名称和用户账户等信息,有时候甚至还包含了密码。在代码中包含以上信息是非常不好的习惯,原因有二。首先,这些信息可以被设计小组中的每一位程序人员看到(但是站点访问者不能在浏览器上看到)。第二,在整个Web站点中的每一个拥有该连接的地方,都必须进行维护和更新。更新密码成为了一项繁重的工作。

ASPNET 20提供了一个选项可以将连接字符串移动至Webconfig文件的连接区域,给字符串一个名称并将其加密。然后ASPNET 20页面就通过这个名称来引用连接字符串。保存连接字符串至Webconfig的步骤并不复杂。打开位于站点根目录下的Webconfig文件。找到被<connectionString>界定的区域(如果不存在,可自行添加)并在<Add>标记中输入如下代码。该标记有三个属性:name、connectionString和providerName。属性name就是将会在页面中使用的连接字符串的普通名称。connectionString属性应当设置为连接至数据库的完整的连接字符串,如前所述。

eg

<xml version="10">

<configuration xmlns=">

以上就是关于Entity Framework connectionstring 怎么加密=解密全部的内容,包括:Entity Framework connectionstring 怎么加密=解密、关于MD5加密过的字符串的解密、怎么实现对SQL Server数据库的字段进行加密和解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9281739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存