加密算法概述
在介绍oracle中的加密算法之前,大家首先要对加密算法有一个大致的了解,懂得为什么加密,如何加密,加密算法的分类。
一, 为什么加密
我们的系统中会存在一些极其敏感的数据,这些数据涉及到公司的机密。自然这些是不想让其他公司或竞争对手看到的,所以就需要一种方法来对数据进行包装。包装后的数据就象是增加了一层坚固的外壳,其他人很难看到壳内的敏感数据。这种包装就是加密。可见加密对于敏感数据的重要意义。
二, 如何加密
所谓加密,就是对原内容为明文的文件或数据按某种算法进行处理,使其成为不可读的代码,经过这样处理的数据通常称为密文,密文只能在经过相对应的反向算法处理后才能恢复原来的内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的,而将该编码信息转化为其原来数据的过程,就是解密   
最简单的加密就是通过改变明文中的字符位置来实现。举个简单的例子,比如说welcome这个字符串,我通过交换相邻位置的字符位置来实现最简单的加密。加密后的字符串变成ewclmoe。这是简单的加密方式,可以说没有任何的安全性,但是可以说明加密的原理,就是通过一定的处理让明文转变成很难读懂的密文。
现在流行的加密算法是利用一复杂的密钥通过某种加密的算法将明文转化为密文。既然是进行加密,那么和加密相关的密钥和加密算法自然也是需要保护的。算法的保密性可以分为基于保持算法的秘密和基于保持密钥的秘密。
如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。
  更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密
码学家,那么他们就无法知道他们是否拥有安全的算法。
而基于保持密钥的算法则具有更大的灵活性和实用习性。这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
  演示如下,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:
EK(M)=C
  DK(C)=M.
  这些函数具有下面的特性:
  DKEKM))=M.
  有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:
  EK1(M)=C
  DK2(C)=M
 DK2 (EK1(M))=M
三, 加密算法的分类
oracle数据库怎么查询表1 基于消息摘要算法
消息摘要Message Digest)是一种能产生特殊输出格式的算法,这种加密算法的特点是无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的摘要便完全不同,因此基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据
经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证,而不能作为原数据内容的加密方案使用,否则谁也无法还原。尽管如此,消息摘要算法还是为密码学提供了健全的防御体系,因为连专家也无法根据拦截到的密文还原出原来的密码内容。因为这个特性,消息摘要算法产生的密文被称为摘要
如今常用的消息摘要算法经历了多年验证发展而保留下来的强者,分别是MD2MD4MD5SHASHA-1/256/383/512等,其中最广泛应用的是基于MD4发展而来的MD5算法。