package com.util;
/*************************************************************************
* Compilation: javac CRC32.java
* Execution: java CRC32 s
*
* Reads in a string s as a command-line argument, and prints out
* its 32 bit Cyclic Redundancy Check (CRC32 or Ethernet / AAL5 or ITU-TSS).
*
* Uses direct table lookup, calculation, and Java library.
*
* % java CRC32 123456789
* CRC32 (via table lookup) = cbf43926
* CRC32 (via direct calculation) = cbf43926
* CRC32 (via Java's library) = cbf43926
*
*
*
* Uses irreducible polynomial:
* 1 + x + x^2 + x^4 + x^5 + x^7 + x^8 +
* x^10 + x^11 + x^12 + x^16 + x^22 + x^23 + x^26
*
* 0000 0100 1100 0001 0001 1101 1011 0111
* 0 4 C 1 1 D B 7
*
* The reverse of this polynomial is
*
* 0 2 3 8 8 B D E
*
*
*
*************************************************************************/
import java.io.UnsupportedEncodingException;
public class CRC32Tool {
private static final String IMG10_URL = "img10.woyopic.com";
private static final String IMG11_URL = "img11.woyopic.com";
private static final String IMG12_URL = "img12.woyopic.com";
private static final String IMG13_URL = "img13.woyopic.com";
public static void main(String[] args) {
String url = "2010/1032/818/60e0e7752 df19b1ce6631dacb8cd7d7c.jpg";
for (int i = 0; i < 4; i++) {
String radomUrl = i + url;
System.out.println(getImgUrl(radomUrl));
}
}
/**
* 获取真实url
* @param imgUrl
* @return
*/
public static String getImgUrl(String imgUrl) {
return "http://" + getImgHost(imgUrl) + "/" ;//+ imgUrl;
}
/**
* 获取host那么
* @param imgName
* @return
*/
public static String getImgHost(String imgName) {
if (imgName == null || imgName.trim().length() == 0) {
return "";
}
int value = 0;
try {
value = getCRC32(imgName) % 4;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return value == 0 ? IMG10_URL : (value == 1) ? IMG11_URL : (value == 2) ? IMG12_URL : IMG13_URL;
}
public static int getCRC32(String _source) throws UnsupportedEncodingException {
int crc = 0xFFFFFFFF; // initial contents of LFBSR
int poly = 0xEDB88320; // reverse polynomial
byte[] bytes = _source.getBytes("utf-8");
for (byte b : bytes) {
int temp = (crc ^ b) & 0xff;
// read 8 bits one at a time
for (int i = 0; i < 8; i++) {
if ((temp & 1) == 1)
temp = (temp >>> 1) ^ poly;
else
temp = (temp >>> 1);
}
crc = (crc >>> 8 ^ temp);
}
// flip bits
crc = crc ^ 0xffffffff;
return crc;
}
}
分享到:
相关推荐
JAVA下使用两种方法(计算法、查表法)实现CRC(XMODEM)算法,以及验证代码
标准的CCITT校验,CRC16位码,很准确,网上找的好多都不靠谱,这个是经过多伦测试出的结果,和C通信校验完全一致
最近在开发javaSocket和C的通信,其中有数据校验就是采用CCITT方式,在网上找了好多,都不切合实际使用,经过一个星期的奋斗查资料,再根据网上搜获,写出了一套标准的校验方法,结果和C语言的校验一直,其中考虑了...
一个简单的工具类,可以直接得到数据的CRC校验码.使用方法CRCUtil.calcCrc16(bytes);CSDN资源分最低一分请谅解
仿真电信中使用的CRC纠错方法待办事项: - 根据除数 zeros = lengthDivisor-1 的长度自动填充添加的零 - 放置一个 kelistener,使其只接受 0 和 1 的条目
binlog_checksum = CRC32支持(对于MySQL 5.6.2+用户) 通过TLS进行安全通信 对JMX友好 实时统计 Maven Central的可用性 没有第三方依赖 不同版本MySQL发行版的测试套件 如果您正在寻找其他语言的类似内容,请查看 ...
Java混淆器Java Obfuscator用于保护Java应用程序。...入门去做去做布尔型Obf 新的字符串加密java-> kotlin insn生成器数字obf crc32错误类/方法/字段重命名器反编译器崩溃网站 (?) gui(C ++,JNI) 配置toml / json
java的智能支付描述符 ...CRC32 验证 用法 基本用法很简单: SpaydReader<Payment> reader = SpaydReader.from(SpaydConfig.defaultConfig()) final ReaderResult<Payment> result = mSpayd.readFromSpayd(validCode
java程序 这些是我在大学课堂上制作的程序。 以下是它们每个人的作用的列表和解释: # HillCipher 是一种使用矩阵乘法的加密策略 - 我在我的计算机安全类中... 使用“javac crcheck.java”在命令行中编译代码后,您可
mysql 驱动务必使用5.0以上版本 连接池的初始化、创建等仔细看构造函数的doc文档,就知道如何操作。我自己用着很方便。 有两个初始化方法,分别用于初始化多个数据库对象,或者单个数据库对象。 String[] ...
可以使用以下算法计算校验和:MD5、SHA-256 或 CRC32。 在 Subversion 位置的情况下,它处理外部、关键字替换和客户端 EOL 设置。 差异模式可用,允许比较两个位置(文件更改、添加或删除)。 用法 范围 描述 - ...
使用面向对象的方法论概念来设计系统基础。 基本类:Category、Document、Topic、Tag,有如下关系: A. 文档属于一个类别,例如政策、计划、报告、收据、订单等。 B. 属于“CS243 2013 年秋季课程文件”、“2013 年...
这些对象以树形结构组织: 文件夹结构(文件夹和文件名) ZIP和JAR结构(像文件夹一样递归解析) (特定于Java).properties文件的名称/值对(特定于Java).class文件的方法签名所有其他文件的CRC32校验和该列表是可...
:包含使用限价单的 Alpha 引擎的全功能版本的文件夹。 来源: Alpha 引擎:设计自动交易算法Golub、Anton 和 Glattfelder、James B. 和 Olsen、Richard B. 金融领域的高性能计算Chapman & Hall/CRC 数学金融系列...
panoptic 现在已被弃用,因为有更干净、更好的方法 - 最显着的是 Java NIO 的 Watcher API - 来监视文件系统。 如果你想接手,联系我; 否则,未来的发展将仅限于处理现有实施的问题。用法莱宁根( ) [panoptic " ...
具有实用程序的纯Java Modbus实现,可简化串行通信 Modbus使用 这可用于将消息发送到从属设备(充当主设备)。 您还可以使用它来接收来自主设备的消息并发送回响应。 该库旨在为Modbus映射提供一种开源的,高度...
基于Java的 无限的代理计算复杂度 代理间通信 规则引擎集成 可插拔数据库集成(Mysql、Postgresql、MongoDB) 健壮的状态表示和状态变化 多线程模拟 常用工具库(状态机、通信协议) 用法 该库通过 Maven 分发。 要...
如何获取签名代码: 使用方法TamperingProtection.getSignatures(context) 。 此方法返回当前签名的指纹。 如果应用由调试密钥库签名,则方法返回调试指纹(如果由发行密钥库签名,则返回释放指纹)。 您也可以在
指定要使用的文件系统:FAT、FAT32 或 NTFS 。如果未指定文件系统,将使用现有的文件系统格式。 Map 显示驱动器号与物理设备名称的映射。该信息在运行 fixboot 和 fixmbr 命令时非常有用。 map 命令仅在...