您的位置:首页 > 编程语言 > Java开发

Java用字符串生成的md5,sha1作为数据库主键, 去重

2016-06-01 21:01 543 查看
用处: 长字符串存数据库时, 计算其md5值作为主键, 可以用来去重

术语:

MD5 - 是一种无法解密的加密算法, 因为它本来就不是用来传输数据的, 它仅仅用来生成”摘要” - 对任何字符串都可以加密成一段唯一的固定长度的代码。并且, 原信息的一点点变化就会导致MD5的巨大变化,例如”A BC”和”ABC”(A和B之间多了一个空格)的MD5值差别非常大,而且之间没有任何关系。

SHA1 - SHA-1基于MD5. 对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。

Java官方文档:

including the RSA, DSA, and ECDSA signature algorithms, the DES, AES, and ARCFOUR encryption algorithms, the MD5, SHA-1, and SHA-256 message digest algorithms, and the Diffie-Hellman and ECDH key agreement algorithms.

RSA, DSA, ECDSA等签名算法、DES, AES, ARCFOUR等加密算法、MD5, SHA-1, SHA-256等信息摘要算法、还有Diffie-Hellman和ECDH这样的密钥协商算法。

//TODO


UUID

JDK1.5 java.util.UUID,直接调用即可.

UUID uuid  =  UUID.randomUUID();


全球唯一的编码, 可以用作主键,但是不能去重. 因为UUID值随时间变化, 你永远得不到两个一样的UUID值.

UUID(Universally Unique Identifier)全局唯一标识符 - 是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。

在Java中生成UUID主要有以下几种方式:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: