当前位置:编程学习 > C#/ASP.NET >>

问一下使用EF时,配置文件中的数据库连接用户和密码如何加密?

因为我是用winform在开发程序,同时使用EF框架。因为是在局域网内直接连接数据库,因此客户端的连接字符串希望加密以策安全。

比如以下配置文件:

<add name="LeadMW_CoreContext" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=LeadMW_Corezs;Persist Security Info=True;User ID=sa;Password=123456;Pooling=False" />

ID和Password如何加密?

百度了很多,也找不到解决方案,有知道的帮忙,谢谢! --------------------编程问答-------------------- 你把链接字符串加密,des,rsa等都可以,然后在读的时候解密 --------------------编程问答-------------------- 这里有源码,可以参照一下:http://www.codeproject.com/Articles/20398/Encrypt-and-Decrypt-ConnectionString-in-app-config --------------------编程问答--------------------
引用 2 楼 tanghuawei 的回复:
这里有源码,可以参照一下:http://www.codeproject.com/Articles/20398/Encrypt-and-Decrypt-ConnectionString-in-app-config

是这样,EF对ConnectionString 的解析是自动的,并不是由我们自己写代码来控制,所以问题就在这里。
我们可以对ConnectionString 加密,但EF取到的是加密串,因此无法解析并使用。 --------------------编程问答-------------------- 看看这个:http://download.csdn.net/detail/z________/3814260 --------------------编程问答--------------------
引用 4 楼 tanghuawei 的回复:
看看这个:http://download.csdn.net/detail/z________/3814260

兄弟,请先看我回复。这个方法不行的。平常怎么加密解密我知道的。我用的是EF框架。EF框架下的加密解密你处理过吗?你给的这个没有提及说是EF框架下的解决方案,应该是不行的。 --------------------编程问答-------------------- 你在一台电脑上加密,还是要提供密钥给它解密来使用,跟不加密还是一样的。
要实现访问控制应该提供一个服务器端 --------------------编程问答-------------------- 用EF的人这么少吗?看来是很不流行? --------------------编程问答-------------------- 给你看一个加密配置文件的方法
http://msdn.microsoft.com/en-us/library/system.configuration.rsaprotectedconfigurationprovider.aspx --------------------编程问答--------------------
引用 6 楼 KarasCanvas 的回复:
你在一台电脑上加密,还是要提供密钥给它解密来使用,跟不加密还是一样的。
要实现访问控制应该提供一个服务器端

密钥写死在程序里。因为客户端的加密等级并不需要多高,防君子不防小人。但如果一点加密也没有,就难保证大家有好奇的会乱动里边的数据。 --------------------编程问答-------------------- 如果是这样,楼主弄明白一个机制这个问题就能解决了..
EF会自动采用与DbContext派生类名称相同的连接字符串, 但是你可以手动提供给它连接名称或连接字符串。 --------------------编程问答--------------------
引用 8 楼 KarasCanvas 的回复:
给你看一个加密配置文件的方法
http://msdn.microsoft.com/en-us/library/system.configuration.rsaprotectedconfigurationprovider.aspx

你这个似乎也没解决问题。我刚才说了,普通加密解密我会的。但我是对EF框架不熟悉,因为EF框架取connectionString自动解析,并连接数据库,不需要我自己写连接代码。所以我无法在EF连接数据库之前进行connectionString解密。
要了解过EF的兄弟,才能提出精准的解决方案。 --------------------编程问答--------------------
引用 10 楼 KarasCanvas 的回复:
如果是这样,楼主弄明白一个机制这个问题就能解决了..
EF会自动采用与DbContext派生类名称相同的连接字符串, 但是你可以手动提供给它连接名称或连接字符串。

这个有点对了,能不能说详细点? --------------------编程问答--------------------
引用 11 楼 daixf_csdn 的回复:
引用 8 楼 KarasCanvas 的回复:给你看一个加密配置文件的方法
http://msdn.microsoft.com/en-us/library/system.configuration.rsaprotectedconfigurationprovider.aspx
你这个似乎也没解决问题。我刚才说了,普通加密解密我会的。但我是对EF框架不熟悉,因为EF框架取……


这个解密过程是由配置管理器自己实现的,程序代码完全不用改。 --------------------编程问答--------------------
引用 12 楼 daixf_csdn 的回复:
这个有点对了,能不能说详细点? 


自己去看一下DbContext那几个构造方法就明白了。 --------------------编程问答--------------------
引用 14 楼 KarasCanvas 的回复:
引用 12 楼 daixf_csdn 的回复:这个有点对了,能不能说详细点? 

自己去看一下DbContext那几个构造方法就明白了。

好的,我先研究研究,谢谢。 --------------------编程问答--------------------
引用 14 楼 KarasCanvas 的回复:
引用 12 楼 daixf_csdn 的回复:这个有点对了,能不能说详细点? 

自己去看一下DbContext那几个构造方法就明白了。

我让同事去研究了,他说不行,原因是:

xxx  10:13:52
构造函数我看过,
Db连接字符串,这个属性没公开.....
不能手动赋值 --------------------编程问答-------------------- 那个是构造方法啊,跟属性什么的完全没联系啊,实例化的时候给它提供一个连接字符串就行了啊

public DbContext(string nameOrConnectionString); --------------------编程问答--------------------
引用 17 楼 KarasCanvas 的回复:
那个是构造方法啊,跟属性什么的完全没联系啊,实例化的时候给它提供一个连接字符串就行了啊

public DbContext(string nameOrConnectionString);

谢谢!再研究。 --------------------编程问答-------------------- 找到解决办法了以,求分享 --------------------编程问答-------------------- 原构造函数:
  public NorthwindEntities(): base("name=NorthwindEntities")
        {
        }

修改成:
  public NorthwindEntities()
            : base("metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=192.168.1.101;initial catalog=Northwind;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework'")
        {
        }


我这里只是个例子,你可以用其他方法来代替了 原构造函数的参数"name=NorthwindEntities"。
这个连接字符串可以写死在程序里面,也可以加密了写在配置文件,使用时再解密。 --------------------编程问答-------------------- ef可以手动处理这些参数 不是必须要自动的
重写继承dbcontex的类的构造方法就可以了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,