- 经验
- 4191
- 分贝
- 0
- 家园分
- 15963
- 在线时间:
- 480 小时
- 最后登录:
- 2024-4-25
- 帖子:
- 1108
- 精华:
- 0
- 注册时间:
- 2007-4-24
- UID:
- 157502
注册:2007-4-24
|
本文介绍常见的算法(MD5/SHA,DSA,RSA,DES)的应用场景,以及在java上的使用方法.
1) MD5/SHA
MessageDigest是一个数据的数字指纹.即对一个任意长度的数据进行计算,产生一个唯一指纹号.
MessageDigest的特性:
A) 两个不同的数据,难以生成相同的指纹号
B) 对于指定的指纹号,难以逆向计算出原始数据
代表:MD5/SHA
Java实现:
MD5:
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(Constant.DATA.getBytes());
byte[] result = md.digest();
SHA:
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(Constant.DATA.getBytes());
byte[] result = md.digest();
2) DES
单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密.
单密钥算法是一个对称算法.
缺点:由于采用同一个密钥进行加密解密,在多用户的情况下,密钥保管的安全性是一个问题.
代表:DES
Java实现:
首先,需要生成一个密钥,这边的做法,是把生成的密钥,保存到某个文件中.
KeyGenerator gen = KeyGenerator.getInstance("DES");
Key key = gen.generateKey();
File keyFile = new File(Constant.CRYPT_KEY_FILE);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(keyFile));
out.writeObject(key);
out.close();
在生成key的时候,可以通过SecureRandom产生一个可信任的随机数源<SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">
|
|