MySQL对指定字段进行加密

转载自:https://blog.csdn.net/zhongbeida_xue/article/details/78614020

BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。 MySQL的四种BLOB类型 类型 大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K Medium。

首先我们创建我们需要使用到的表格 
这里写图片描述

双向加密

我们向其中插入一条数据:

 
  1. INSERT INTO pwn (NAME, VALUE)

  2. VALUES

  3. (

  4. 'worker',

  5. ENCODE('pual', 'abcd')

  6. );

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

按普通方式查看记录: 
这里写图片描述

我们要怎么操作才能看到我们刚才存进去的value值呢?

 SELECT name, DECODE(VALUE, 'abcd') as value FROM pwn WHERE name='worker';
  • 1

结果:

这里写图片描述

这就是所谓的双向加密,既可以对数据进行加密,也可以对数据进行解密

单向加密

所谓的单向加密就是只能对数据进行加密,但是颠倒,也就是不能对已经加密的数据再转换为我们能识别的内容;

你肯定要问了,这个有什么用啊?

采用这种加密方法就保证了这个数据就只有用户一个人可以知道了,其他人永远无法知道,但是使用双向加密的话,只要别人知道加密密钥就可以还原加密字段;

我们使用MD5函数,再插入一条记录

INSERT pwn VALUES("Tom ",MD5("cccdd"));
  • 1

查询:

SELECT * FROM pwn WHERE name='tom';
  • 1

结果: 
这里写图片描述

你也可以使用这个函数ENCRYPT

SQL 
INSERT pwn VALUES("Lucy",ENCRYPT("tttt","abcd"));

使用这个函数查询出来的结果解释NULL,如图

这里写图片描述

我们还可以使用这个函数:

INSERT pwn VALUES("Jack",AES_ENCRYPT("jack","ccdd"));
  • 1

这里写图片描述

还可以使用这个函数AES_DECRYPT(crypt_str,key_str)

SQL:INSERT pwn VALUES("Pual",AES_DECRYPT("jack","ccdd"));

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010730870/article/details/88222437
今日推荐