各种加密实现
http://www.blogjava.net/stone2083/archive/2012/09/02/168113.html
java->类加载器->文件校验器->安全管理器
简述:
校验器的作用:校验类文件是否完整
安全管理器: 负责控制某个操作是否被允许
用户认证
数字签名
加密
数字签名更多是用来校验信息有没有被修改过,而加密可以彻底杜绝防止别人看到信息内容
1. 语言层次安全性
最初的Java(JDK1.2)平台采用沙箱安全模型,基本安全模型由三部分来承担,这三部分构成Java运行环境的三个安全组件,分别是:类加载器,文件校验器,安全管理器。
1.1 类加载器是Java安全机制的重要组成部分,可以将类加载器主要分为四类,即,启动类加载器、标准扩展类加载器、路径加载器和网络类加载器。
1.1.1采用“双亲委派链模式”
1.1.2类加载器为加载的类提供了不同的命名空间
1.1.3类加载器提供了类型检查的功能模块。类加载器在程序的执行周期中还进
行语义、类型匹配、类型转换和抛出异常等相关检查,保证了程序的健壮性。
1.2 类文件校验器的校验类文件校验器负责检查那些无法执行的明显有破坏性的
操作
1.3 安全管理器是一个负责控制某个操作是否允许执行的类,
2企业层次的安全特性
SHA-1 和 MD5算法
严格说来它们不算是加密算法,只能说是摘要算法。
SHA-1算法:Security Hash Algorithm 安全哈希算法, 它可以把长度不超过2的64次方位的信息转换成160位(20字节)长的散列值
MD5算法:Message Digest 信息摘要算法, 散列长度是128位,16个字节。它对输入以512位分组,输出是4个32位字的级联。
CRC算法:循环冗余校验,碰撞几率比较高
| 比较类型 | SHA-1 | MD5 |
|----------------+----------+---------|
| 分组长度 | 512比特 | 512比特 |
| 摘要长度 | 160比特 | 128比特 |
| 循环中的步骤 | 80 | 60 |
| 报文的最大长度 | 2^64 - 1 | 无穷大 |
| 基本逻辑函数 | 4 | 4 |
| 结构形式 | 大端 | 小端 |
由于MD5 与SHA-1均是从MD4 发展而来,它们的结构和强度等特性有很多相似之处,表(1)是对MD5与SHA-1 的结构比较。SHA-1与MD5 的最大区别在于其摘要比MD5 摘要长 32 比特。对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度:MD5 是2^128 数量级的操作,SHA-1 是2^160 数量级的操作。产生具有相同摘要的两个报文的难度:MD5是 2^64 是数量级的操作,SHA-1 是2^80 数量级的操作。因而,SHA-1 对强行攻击的强度更大。但由于SHA-1 的循环步骤比MD5 多(80:64)且要处理的缓存大(160 比特:128 比特),SHA-1 的运行速度比MD5 慢。
MD5 和SHA-1 是单项散列函数的典型代表
DSA(Data signature Algorithm数字签名)
生成一对公钥和私钥,把公钥发送给需要获取消息的人。将所要发送的消息用自己的私钥加密,然后发送给接收者,接受者得到文件之后用公钥验证.主要作用是验证发送者的身份和信息的完整性。它是数字签名算法,一种标准的 DSS(数字签名标准),严格来说不算加密算法
RSA公钥密码体制
RSA公钥加密算法
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA是第一个既能用于数据加密也能用于数字签名的算法。RSA的安全性依赖于大数分解,但是否等同于大数分解不得而知。
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法
DES和AES 单密钥算法 对称加密算法
DES:data encryption standard
DES的算法是对称的,既可用于加密又可用于解密,是一个密码长度为56位的古老
的分组密码,DES算法现在已经过时了,因为可以用穷举法破解。