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这样的密钥协商算法。
全球唯一的编码, 可以用作主键,但是不能去重. 因为UUID值随时间变化, 你永远得不到两个一样的UUID值.
UUID(Universally Unique Identifier)全局唯一标识符 - 是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
在Java中生成UUID主要有以下几种方式:
术语:
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主要有以下几种方式:
相关文章推荐
- [置顶] Spring配置多数据源和JOTM分布式事务解决方案
- java.lang.OutOfMemoryError: Java heap space解决方法
- 鸟哥Java学习之线程间通信-多线程
- Javassist 通用工具之 CodeInjector
- 鸟哥Java学习之异常-面向对象
- 【java进阶】初探泛型
- JAVA集合 笔记
- 鸟哥Java学习之多态、内部类-面向对象
- Java IO模型&NIO
- Spring学习一(入门和bean的作用域)
- Java集合类总结
- 鸟哥Java学习之抽象类、接口-面向对象
- Spring MVC Controller默认是单例
- spring ioc原理
- SpringMVC错误小结
- 鸟哥Java学习之单例设计、继承-面向对象
- 整数数据类型表示范围与位运算
- java环境变量详解---找不到或无法加载主类
- JAVA 集合框架学习笔记
- 高并发java