MD5和getCRC

唯一标记文件内容的方式

方式1: 

1.1.MD5 (容易生成30位的值)

public static MessageDigest MD5;
static {
    try {
        MD5 = MessageDigest.getInstance("MD5");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
}
public static String mkMd5(byte[] bs) {
    MD5.reset();
    MD5.update(bs);
    return toHex(MD5.digest());
}
public static String toHex(byte[] bs) {
    StringBuilder builder = new StringBuilder();
    for (byte b : bs) {
        builder.append(Integer.toHexString(b & 0xff));
    }
    return builder.toString();
}

//测试

String readMd5 = mkMd5(ByteStreams.toByteArray(objectContent));

1.2. getCRC(是long类型的值)

public long getCrc(InputStream inputStream)
        throws IOException
{
    CRC32 crc32 = new CRC32();
    byte[] data = new byte[1024];

    int i = 0;
    while ((i = inputStream.read(data)) > 0) {
        crc32.update(data, 0, i);
    }
    return crc32.getValue();
}

//测试

long readMd5 = getCrc(objectContent);

方式2

2.1. MD5(只会生成32位的值, 建议采用)

@Test
public void testMD5() throws NoSuchAlgorithmException {
    byte[] content = new byte[100];
    MessageDigest digest = MessageDigest.getInstance("MD5");
    digest.update(content);
    
    byte[] md5Bytes = digest.digest();
    String md5 = BaseEncoding.base16().lowerCase().encode(md5Bytes);
}

2.2.getCRC

@Test
public void testCrc() {
    byte[] content = new byte[100];
    CRC32 crc32 = new CRC32();
    crc32.update(content);
    long crcCode = crc32.getValue();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值