加密lob数据+加密lob数据的方式+加密的语法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhou920786312/article/details/72853491

加密lob数据
1oracle可以对lob对象数据进行加密,包含blob,clob,nclob
2bfile类型不能进行加密,因为该类型存储的是文件的指针地址,实际文件在数据库外

加密lob数据的方式
3DES168:密码长度为168比特的三重数据加密标准算法.
AES128:密码长度为128比特的高级加密标准算法.
AES192:密码长度为192比特的高级加密标准算法.
AES256:密码长度为256比特的高级加密标准算法.

加密的语法
create table table_name(
column_name clob|blob|nclob encrype【useing algorithm】
)log(column_name ) store as securefile
(cache reads|cache|nocache)

参数说明
table_name:表名
column_name :列名
encrype:对列加密的关键字
securefile:对列加密的关键字
algorithm:加密的算法(3DES168,AES128等)
cache reads|cache|nocache:表示缓冲器高效缓存选项。

展开阅读全文

数据加密

08-15

<p>n <span><strong>一、课程简介</strong></span>n</p>n<p>n <span>这是</span><span><span style="color:#E56600;font-size:14px;">『</span><span style="color:#E56600;font-size:14px;">Java学习指南系列</span><span style="color:#E56600;"></span><span style="color:#E56600;font-size:14px;">』</span></span><span>的第16篇教程 ,是Java开发的高级课程,介绍实际工程里常见的各种专项技术。</span>n</p>n<span style="font-size:14px;"><br /></span>n<p>n <span><strong>二、主要内容 </strong></span>n</p>n<p>n <span>(每章内容独立,各自独立成章)</span>n</p>n<p>n <span>* 视频和音频的播放 ( libVLC ) </span>n</p>n<p>n <span>* Excel 表格处理 ( POI )</span>n</p>n<p>n <span>* Word 文档处理 <span>( POI )</span></span>n</p>n<p>n <span>* 二维码的生成和解析 ( QRCode )</span>n</p>n<p>n <span>* 图片处理</span>n</p>n<p>n <span>* 视频处理</span>n</p>n<p>n <span>* 本地程序调用技术</span>n</p>n<p>n <span>* 连接WEB服务器 ( HTTP Client )</span>n</p>n<p>n <span>* 连接FTP服务器 ( FTP Client )</span>n</p>n<p>n <span>* 发送邮件 (SMTP / MX / SPF )</span>n</p>n<p>n <span>* 发送短信</span>n</p>n<p>n <span>* 数据的编码 ( HEX / Base64)</span>n</p>n<p>n <span>* 数据的校验 ( MD5 / CRC32 / HMAC-SHA1)</span>n</p>n<p>n <span>* 数据的加密 ( DES / AES )</span>n</p>n<p>n <span>* 正则表达式</span>n</p>n<p>n <span>* 反编译技术</span>n</p>n<p>n <span>* 其他专业技术。。</span>n</p>n<br /><p>n <span><strong>三、课程体系</strong></span>n</p>n<p>n <span>〖Java学习指南<span>系列</span>〗</span><span>:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。</span>n</p>n<p>n <span><span style="color:#E56600;">〖网站开发</span><span>系列</span><span style="color:#E56600;"></span><span style="color:#E56600;">〗</span></span><span><span style="color:#E56600;font-size:14px;">:</span><span style="font-size:14px;">包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。</span></span>n</p>

加密不定长数据加密数据加密数据大小相等,

08-15

1. 我使用的是OpenSSL库, AES算法rn2. 想实现的功能是加密不定长的数据, 而且加密后的数据和原始数据一样大rn 求个能实现的算法, 求简单的, 本人基本上学过过算法rnrn3. 比如加密下面这20个字节数据, 数据就被加密成32个字节的数据, 数据变大了rnBYTE byIn[20 = rn '\x11' ,'\x22' ,'\x33' ,'\x44' ,'\x55' ,'\x66' ,'\x77' ,'\x88' ,rn '\x99' ,'\xAA' ,'\x00' ,'\xCC' ,'\xDD' ,'\xEE' ,'\xFF' ,'\x00' ,rn [color=#FF0000]'\x45' ,'\x4A' ,'\x05' ,'\x8C'[/color] //加密之后变成了16个字节的加密数据rn;rnrnrn4. 下面是代码, 解密之后最后一块数据<20个字节的后4个字节不对了>, 因为AES是按照16个字节加密解密的rn#include "stdafx.h"rn#include rn#include rn#include rn#include rnrn#include rn#include rn#include rn#include rnusing std::string;rnrn//AES加密是以每组16个字节加密的rn//AES加密(加密后数据, 加密前数据, 大小, 密钥) rnvoid AesEncryption(OUT BYTE* bOutData, IN BYTE* bInData, IN DWORD dwSizeOut, OUT string strKey)rnrn DWORD dwSize = Align(dwSizeOut, 16);rnrn //new一片0x16对齐后的空间rn BYTE* byNewIn = new BYTE[dwSize]();rn memcpy(byNewIn, bInData, dwSizeOut);rnrn //计算加密的次数rn DWORD dwAlignNum = dwSizeOut / 16;rn rn //最后一块剩余字节数rn DWORD dwRemain = dwSizeOut % 16 ;rnrn if (dwRemain)rn rn ++dwAlignNum;;rn rnrn unsigned char aes_keybuf[32] = 0 ;rn //memset(aes_keybuf,0,sizeof(aes_keybuf));rn //将密钥复制到aes_keybufrn strcpy((char *)aes_keybuf, strKey.c_str());rn //把明文密钥加密处理rn AES_KEY aeskey;rn AES_set_encrypt_key(aes_keybuf, 256, &aeskey);rnrnrn //new一片0x16对齐后的空间rn BYTE* byNewOut = new BYTE[dwSize]();rn rnrn for (DWORD i = 0; i < dwAlignNum; i++)rn rn AES_encrypt((const unsigned char *) ((DWORD)byNewIn + i * 16), rn (unsigned char *) ((DWORD)byNewOut + i * 16), rn &aeskey);rn rnrnrn //把实际加密后数据, 复制到输出缓冲区rn memcpy(bOutData, byNewOut, dwSizeOut);rnrnrn delete byNewOut;rn delete byNewIn;rnrnrnrn//AES解密(解密后数据, 解密前数据, 大小, 密钥) rnvoid AesDecryption(OUT BYTE* bOutData, IN BYTE* bInData, IN DWORD dwSizeOut, OUT string strKey)rnrn DWORD dwSize = Align(dwSizeOut, 16);rnrn //new一片0x16对齐后的空间rn BYTE* byNewIn = new BYTE[dwSize]();rn memcpy(byNewIn, bInData, dwSizeOut);rnrn //计算加密的次数rn DWORD dwAlignNum = dwSizeOut / 16;rnrn //最后一块剩余字节数rn DWORD dwRemain = dwSizeOut % 16;rnrn if (dwRemain)rn rn ++dwAlignNum;;rn rnrn unsigned char aes_keybuf[32] = 0 ;rn //memset(aes_keybuf,0,sizeof(aes_keybuf));rn //将密钥复制到aes_keybufrn strcpy((char *)aes_keybuf, strKey.c_str());rn //把明文密钥加密处理rn AES_KEY aeskey;rn AES_set_decrypt_key(aes_keybuf, 256, &aeskey);rnrnrn //new一片0x16对齐后的空间rn BYTE* byNewOut = new BYTE[dwSize]();rnrnrn for (DWORD i = 0; i < dwAlignNum; i++)rn rn AES_decrypt((const unsigned char *)((DWORD)byNewIn + i * 16),rn (unsigned char *)((DWORD)byNewOut + i * 16),rn &aeskey);rn rnrnrn //把实际加密后数据, 复制到输出缓冲区rn memcpy(bOutData, byNewOut, dwSizeOut);rnrn delete byNewOut;rn delete byNewIn;rnrnrnrnBYTE byIn[20] = rn '\x11' ,'\x22' ,'\x33' ,'\x44' ,'\x55' ,'\x66' ,'\x77' ,'\x88' ,rn '\x99' ,'\xAA' ,'\x00' ,'\xCC' ,'\xDD' ,'\xEE' ,'\xFF' ,'\x00' ,rn '\x45' ,'\x4A' ,'\x05' ,'\x8C'rn;rnrnint main(void) rnrn //BYTE byIn[20] = ;rn BYTE byOut[20] = ;rn BYTE byBuf[20] = ;rnrn AesEncryption(byOut, byIn, 20, "123456");rnrn AesDecryption(byBuf, byOut, 20, "123456");rnrn return 0;rn 论坛

没有更多推荐了,返回首页