设计自己的基于MD5的Digest

Share

前段时间写过一篇文章。这年头啊。。MD5都靠不住了。。。,不过,我们可以按照自己的偏好,在md5的基础上再做点手脚。

首先,还是调用md5生成加密串。

String data="Test digest"
MessageDigest md = MessageDigest.getInstance(ALGORITHM);
byte[] dat = data.getBytes();
md.update(dat);
byte[] digest = md.digest();

再看看我自己的算法:

StringBuffer buf = new StringBuffer();

for (int i = 0; i < digest.length; i++) {
int d = digest<i>;
if (d < 0) {
d += 256;
}
if (d < 16) {
buf.append(ZERO);
}
buf.append(Integer.toString(d, 16));
}

String retStr = buf.toString();

整合起来就是:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Digest {

private static final String ALGORITHM = "MD5";
private static final String ZERO = "0";

private String makeStringDigest(byte[] digest) {

StringBuffer buf = new StringBuffer();

for (int i = 0; i < digest.length; i++) {
int d = digest<i>;
if (d < 0) {
d += 256;
}
if (d < 16) {
buf.append(ZERO);
}
buf.append(Integer.toString(d, 16));
}

String retStr = buf.toString();

return retStr; 
}

public String getStringDigest(String data) throws NoSuchAlgorithmException {

MessageDigest md = MessageDigest.getInstance(ALGORITHM);
byte[] dat = data.getBytes();

md.update(dat);

return this.makeStringDigest(md.digest());
}
}