
41版本之前是mysql323加密,mysql
41和之后的版本都是mysqlsha1加密,mysql数据库中自带old_password(str)和password(str)函数,它们均可以在mysql数据库里进行查询,前者是mysql323加密,后者是mysqlsha1方式加密。
(1)以mysql323方式加密
selectold_password('111111');
(2)以mysqlsha1方式加密
select
password('111111');
mysql323加密中生成的是16位字符串,而在mysqlsha1中生存的是41位字符串,其中是不加入实际的密码运算中,通过观察在很多用户中都携带了"",在实际破解过程中去掉"",也就是说mysqlsha1加密的密码的实际位数是40位。
第一层 服务主密钥 备份服务主密钥
backup service master key to file='c:\smkbak'
encryption by password='P@ssw0rd'
restore service master key from file='c:\smkbak'
decryption by password='P@ssw0rd'
第二层 数据库主密钥
1)必须先在该数据库上创建数据库主密钥才能使用
create master key encryption by password='P@ssw0rd'
2)使用数据库主密钥
-如果数据库主密钥使用服务密钥进行保护,则在使用时会自动打开
opren master key decryption by password='P@ssw0rd'
3)查看数据库主密钥状态
syssymmetric_keys
4)备份数据库主密钥
backup master key to file='c:\smkbak'
encryption by password='P@ssw0rd'
restore master key from file='c:\smkbak'
decryption by password='P@ssw0rd'
当然可以加密,在数据写入前进行加密运算,数据读出后进行解密运算。
数据库中存放的是密文数据,只有通过你个特定的程序才能正确解读存取数据库内容,复制 *** 作软件本身不能阻止,但如果复制的内容是残缺的密文,无法解密,不是同样有效吗。把数据信息加密后拆分成几部分,当然拆分可以比较复杂的分,比如每间隔一个字节拆分。把拆分的数据分别写入不同的文件,不同的目录。
好像没这东西
你在编程语言中实现把
这种情况我都是用MD5加密
虽然你不想听理论。。。我也懒得写代码。。。
1、把用户的密码用MD5改变成32个字符
2、将这字符串写到数据库里
3、判断密码是否正确的时候,把用户输入的密码在用MD5改变成32个字符、判断这字符串和数据库中字符串是否相同
下面是JAVA的MD5用法
import javasecurityMessageDigest;
public class MD5 {
private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
//将字节数组转换为十六进制字符串
private static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < blength; i++) {
resultSbappend(byteToHexString(b[i]));
}
return resultSbtoString();
}
//将字节转换为十六进制字符
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin) {
String resultString = null;
try {
resultString = new String(origin);
//MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法
MessageDigest md = MessageDigestgetInstance("MD5");
resultString = byteArrayToHexString(mddigest(resultString
getBytes("GBK")));
} catch (Exception ex) {
}
return resultString;
}
public static void main(String[] args)
{
Systemoutprintln(MD5MD5Encode("admin"));
Systemoutprintln(MD5MD5Encode("密码内容"));
}
}
md5加密,是不可逆的,但现在可以通过比较加密后的串来得到密码,所以一般的做法是先做一次或多次的位移,再做md5加密,这样相对安全一些。
自己的系统要验证,也是先将用户输入的密码,做相应的位移,再做md5加密,比较最后结果。
保护些数据免受黑客或者窥探者获取令关注重要问题您既能让未经授权员使用或者破坏应用程序同要保证您竞争优势幸运MySQL带设计用提供种类型安全加密函数本文概述其些函数并说明何使用及能够提供同级别安全双向加密让我简单加密始:双向加密段数据通密钥加密能够由知道密钥解密mysql两函数支持种类型加密别叫做ENCODE()DECODE()面简单实例:mysql>
INSERT
INTO
users
(username,
password)
VALUES
('joe',
ENCODE('guessme',
'abracadabra'));
Query
OK,
1
row
affected
(014
sec)其Joe密码guessme通密钥abracadabra加密要注意加密完结二进制字符串所示:mysql>
SELECT
FROM
users
WHERE
username='joe';
+----------+----------+
|
username
|
password
|
+----------+----------+
|
joe
|
03i!
|
+----------+----------+
1
row
in
set
(002
sec)abracadabra密钥于恢复原始字符串至关重要密钥必须传递给DECODE()函数获原始、未加密密码面使用:mysql>
SELECT
DECODE(password,
'abracadabra')
FROM
users
WHERE
username='joe';+---------------------------------+
|
DECODE(password,
'abracadabra')
|
+---------------------------------+
|
guessme
|
$query
=
"SELECT
COUNT()
FROM
users
WHERE
username='$inputUser'
AND
DECODE(password,
'abracadabra')
=
'$inputPass'";>提示:虽ENCODE()DECODE()两函数能够满足数要求候您希望使用强度更高加密手段
access数据库本身不提供加密,加密过程受控于网站的asp代码,你没有代码就不知道怎么加的密,不过大量网站都是用md5加密的,随便找个软件就能破解了。不过md5是单向散列算法(不明白就算了),也就是说,你只能靠枚举来破解密码,不要指望能通过算法解密出来
MD5加密算法
单向不可逆的算法
用MD5加密的方式是把用户的密码通过MD5加密后存储在数据库里,验证的时候只要把用户输入的密码用MD5加密以后与数据库里面的比较,一样就是正确的密码。
如果你密码忘了的话,把数据库里保存的MD5那段改成 202cb962ac59075b964b07152d234b70 ,然后用密码123登录。
因为123用MD5加密之后就是202cb962ac59075b964b07152d234b70,然后你再在你的修改密码中改成其他的。
以上就是关于数据库加密有几种全部的内容,包括:数据库加密有几种、怎么对数据库已有的数据进行加密、用C++语言写的软件中,数据库内容能不能加密,就是只能用,不能浏览和复制等 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)