密码学算法及应用(二)
来源:互联网 发布:王子文身高知乎 编辑:程序博客网 时间:2024/05/14 18:35
密码学六元组
- -明文
- -密文
- -加密算法
- -解密算法
- -加密秘钥
- -解密秘钥
其中加密算法和解密算法一般都是公开的,只有公开的算法才能被验证是安全的。不要试图开发自己的保密加密算法,一旦算法泄露,加密体系就崩溃了。所以加密时要选用公开的算法。
机密性完全依赖于秘钥的安全性,秘钥泄露了,就无安全可言了,密文可以被截获,加解密算法都是公开的,对于破译者来说,算法不是秘密,关键是拿到密码本。
加密算法的分类
- 对称加密(传统加密算法) -- 加解密秘钥相同
- 非对称加密(公钥加密算法)--加解密秘钥不同
JAVA
JDK对密码学算法的支持基本都位于下面两个包中- -- javax.security
- -- javax.crypto
对称加密算法
- DES (Data Encryption Standard)
- 3DES (Triple DES)
- AES (Advanced Encryption Standard)
对称算法特点
- 加解密过程是互逆的
- 加减密算法使用置换和移位
algorithm
keylength
security
speed
DES
56
可被穷举破解
快
3DES
112或168
较高
慢
AES
128、192、256
暂时还未被破解
快
安全性是相对而言的,随着计算机性能的提升和云计算的发展,安全算法的破解也会成为可能
AES
秘钥长度:128、192、256 (JDK默认只能使用128,如需使用更长的秘钥,需要从Oracle官网下载对应扩展包)
对称加密的最新标准
安全性高(暂时没有被破解)、加密效率高
推荐使用
AES扩展包
非对称加密算法(公钥加密算法)
常用算法- RSA
- DH
- EIGamal
公钥密码体系
每个人都有两个秘钥:PublicKey,PrivateKey
公钥公开给别人用,私钥自己保管好不可泄露
用途
通信加密:公钥加密,私钥解密
数字签名:私钥加密,公钥解密
通信模型
为什么需要公钥密码体系
在互联网环境下,对称秘钥的配送需要安全保证
非对称密钥还可以做数字签名
优缺点
优点:解决了秘钥配送的安全问题
缺点:运算复杂,加密效率低
RSA算法
- 由MIT的3位学者提出,取每个人姓氏的第一个字母为算法命名
- 秘钥长度:512-65536(JDK默认是1024)
- 算法的本质:两个大素数的乘积分解问题
- 目前是不可破解的
DH算法
- DH是一种秘钥交换算法
- 用于通信双方生成相同的对称密码
两类算法的关系
相互补充,而不是后者取代前者
algorithm
keyexchange
encryptionspeed
AES
不安全
快
RSA
安全
慢
使用非对称算法来交换秘钥(甲乙双方产生相同对称秘钥)
使用对称算法加密数据
二者结合使用即安全又高效 比如:HTTPS
0 0
- 密码学算法及应用(二)
- 密码学算法及应用(一)
- 应用密码学(学习整理、二)
- 《应用密码学》 欧几里得算法-Euclid
- BiDi 算法详解及应用(二)
- 密码学简介(二)
- 密码学----基础概念(二)
- 密码学基础知识(二)密码体制
- 实验吧密码学WriteUp(二)
- 密码学总结(二) 数学定理
- 密码学学习(二) 置换加密算法(Transposition Cipher)及python实现
- 双线性映射(密码学常用算法)
- 十大基础应用算法及C++实现(二)----堆排序算法
- 【算法】算法的应用(二)
- DLX算法及应用(二)Matlab解数独-数组模拟链表
- 密码学作业二:AES
- 密码学基础概念(二)
- 密码学常见应用错误
- rar commandline
- 2010上海世博会各国展馆珍贵图片
- jQuery的基本选择器
- 常见信号的模拟仿真(matlab)(spike signal)
- 变量
- 密码学算法及应用(二)
- 学习笔记之openssl、文件加密、CA证书的创建
- Linux之编写运行第一个c语言程序
- test 排序(二分答案)
- 程序生成的四个步骤,Linux动态库与静态库
- 字符串
- MySQL 数据操纵语言(DML)
- ARToolKit 的simpleLite程序分析
- Android实现从左往右TextView淡入淡出渐变效果