呵呵,貌似没有自己都看不到的说法,只有自己看不懂的。
一般的密码是经过MD5函数或者sha1函数加密而成的,还有自己写加密算法加密而成的,而不是自己看不到的
用md5加密,一般用char型的,16位或32位
用sha1加密,一般用char型,40位
'引用对象库“Microsoft ActiveX Data Objects 28 Library”
'引用对象库“Microsoft ADO Ext 28 For DDL Security”,简称为ADOX
Dim cat As New ADOXCatalog
Dim pstr As String
pstr = "Provider=MicrosoftJetOLEDB40;"
pstr = pstr & "Data Source=" & AppPath & "\datmdb"
pstr = pstr & ";Jet OLEDB:Database Password=123"
catCreate pstr '创建数据库
Dim cat As New ADOXCatalog '不用cat用另外一个名字也可以
Dim pstr As String
Dim tb1 As New Table
pstr = "Provider=MicrosoftJetOLEDB40;" '不能把这里的40改为351
pstr = pstr & "Data Source=" & AppPath & "\datmdb"
pstr = pstr & ";Jet OLEDB:Database Password=123"
catActiveConnection = pstr
tb1Name = "学生信息" '表的名称
tb1ColumnsAppend "姓名", adVarWChar, 20 '表的第一个字段
tb1ColumnsAppend "年龄", adInteger '表的第二个字段
tb1ColumnsAppend "性别", adVarWChar, 2 '表的第三个字段
tb1ColumnsAppend "出生年月", adDate '表的第四个字段
catTablesAppend tb1 '建立数据表
Dim conn As ADODBConnection 'conn为连接
Dim rs As New ADODBRecordset 'rs为记录集
Dim sql As String
Set conn = CreateObject("adodbconnection")
connOpen "Provider=MicrosoftJetOLEDB40;Data Source=" & AppPath + "\datmdb" & ";Jet OLEDB:Database Password=123" '打开数据源
sql = "select from 学生信息 "
rsCursorLocation = adUseClient
rsOpen sql, conn, adOpenKeyset, adLockPessimistic
'rsMoveLast
rsAddNew '往表中添加新记录
rsFields(0)Value = "李振"
rsFields(1)Value = 22
rsFields(2)Value = "男"
rsFields(3)Value = #6/8/1984#
rsUpdate
rsClose
connClose
问题解决思路:
将配置文件用户相关的信息(例如:密码)进行加密使其以密文形式存在,进行初始化连接池的时候进行解密 *** 作,达到成功创建连接池的目的。Tomcat默认使用DBCP连接池(基于common-pool的一种连接池实现),对orgapachecommonsdbcpBasicDataSourceFactory类修改,把数据库密码字段(加密后的密文)用解密程序解密,获得解密后的明文即可。
具体实现:
1 修改orgapachecommonsdbcpBasicDataSourceFactory类文件
找到数据源密码设置部分
value = propertiesgetProperty(PROP_PASSWORD);
if (value != null) {
dataSourcesetPassword(value);
}
修改为:
value = propertiesgetProperty(PROP_PASSWORD);
if (value != null) {
dataSourcesetPassword(Encodedecode(value));
}
将配置文件中的“密码”(加密后的结果)取出,调用加解密类中的解密方法Encodedecode(value)进行解密。
2 加密类Encodejava,本例中使用加密解密模块比较简单只是用来说明问题,密文为明文的十六进制串。
public class Encode {
//编码-普通字符串转为十六进制字符串
public static String encode(String password){
String result = “”;
byte[] psd = passwordgetBytes();
for(int i=0;i<psdlength;i++){
result += IntegertoHexString(psd[i]&0xff);
}
return result;
}
//解码–十六进制字符串转为普通字符串
public static String decode(String password){
String result = “”;
password = passwordtoUpperCase();
int length = passwordlength() / 2;
char[] hexChars = passwordtoCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
result = new String(d);
return result;
}
//字符转字节
public static byte charToByte(char c) {
return (byte) “0123456789ABCDEF”indexOf(c);
}
}
3 数据库连接池文件,红色字体为数据源配置中密码设置,此时已经改为密文形式。
<xml version=’10′ encoding=’utf-8′>
<Context docBase=”reportmis” path=”/reportmis” privileged=”true” workDir=”work\Catalina\localhost\reportmis”>
<Resource auth=”Container” name=”mis2datasource” type=”javaxsqlDataSource”/>
<ResourceParams name=”mis2datasource”>
<parameter>
<name>password</name>
<value>696e65743231</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@127001:1521:orcl</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oraclejdbcdriverOracleDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>wanfang</value>
</parameter>
</ResourceParams>
</Context>
4 将修改后的BasicDataSourceFactoryjava和新添加的Encodejava编译后的class类文件重新打包进commons-dbcp-14jar,将该包拷贝进tomcat下的common/lib目录中,重启tomcat。此时tomcat下部署的应用在连接数据源的时候都可以在不暴露密码明文的情况下进行连接。
一般密码字段就是用varchar记录的。不过密码会在前台也就是系统程序中,或者在数据库中,比如orcal 中在写入前,在存储过程中加密。如后再写入数据库。实际在数据库里看到的并不是原密码。需要提取原密码时,需要提取密码字段的值,然后解密。再传到前台。
以下代码可以满足你的需求,已经在oracle中测试。
create table password1
(
user_id varchar2(10),
pwd varchar2(100)
)
CREATE OR REPLACE FUNCTION GET_MD5
( p_str in varchar2)
RETURN varchar2 IS
BEGIN
RETURN Utl_RawCast_To_Raw(DBMS_OBFUSCATION_TOOLKITMD5(input_string => Upper(P_Str)));
END;
insert into password1 values('wwj',GET_MD5('WWJ'));
update password1 set pwd=GET_MD5('LXY') where user_id='wwj'
MD5加密密码,连数据库管理员都无法得知用户的密码,这就是MD5的好处,
对于用户忘记密码,可以给用户一个密码保护,即提示问题和回答,用户回答对了可以重置密码,如果连密码保护都忘了,很对不起,你的帐号从此丢失,只能联系管理员删除以前的帐号新建一个新帐号,并且把数据都挪到新帐号上
以上就是关于php的phpmyadmin中 我要在数据库设置一个密码的字段 要连自己都看不到得 要选什么字段类型全部的内容,包括:php的phpmyadmin中 我要在数据库设置一个密码的字段 要连自己都看不到得 要选什么字段类型、怎样用VB创建一个带密码,表,字段 的数据库、如何实现Tomcat连接池数据库密码加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)