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

原创 2016年06月01日 21:01:55

用处: 长字符串存数据库时, 计算其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主要有以下几种方式:

Java 对字符串数据进行MD5/SHA1哈希散列运算

Java 对字符串数据进行MD5/SHA1哈希散列运算 package cn.aibo.test; import java.security.MessageDigest; import...
  • rongwenbin
  • rongwenbin
  • 2015年01月07日 15:40
  • 5357

用MD5生成唯一性的id

http://pythoncentral.io/hashing-strings-with-python/
  • xyqzki
  • xyqzki
  • 2015年08月19日 16:35
  • 1088

数据库主键设定对查询效率的影响

在数据库表设计时,许多人为采用INT类型还是GUID(uniqueidentifyer)作为主键争论不休,有认为int型字段好的,有认为GUID好的,很多时候的焦点集中在效率上。   为了弄清事实真...
  • peng_hai_lin
  • peng_hai_lin
  • 2012年04月05日 15:35
  • 3061

聊一聊MD5

MD5是什么 message-digest algorithm 5(信息-摘要算法)。经常说的“MD5加密”,就是它→信息-摘要算法。 在下载一下东西时,经常在一些压缩包属性里,看到md5值。而...
  • bobo0915
  • bobo0915
  • 2015年11月24日 10:14
  • 278

SQL Server 数据库中的 MD5 和 SHA1

MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果...
  • wangyunyong0905
  • wangyunyong0905
  • 2007年10月08日 15:09
  • 2419

mybatis insertOrUpdate操作

id="insertOrUpdate"> insert into base_person (pname, idcard, gender, nation, source_...
  • l_flyme
  • l_flyme
  • 2016年12月15日 12:03
  • 1942

mybatis缓存 redis实现

最近项目需要针对mybatis查询加入缓存,使用redis,于是上网查找mybatis缓存 redis实现的相关文章,有很多关于mybatis redis缓存的介绍以及mybatis Cache接...
  • win7system
  • win7system
  • 2016年04月13日 11:13
  • 1952

这么多年被第三方接入坑的那些事。。。关于md5签名和sha1证书的坑

BAT的好多接入都好坑
  • wxcaixiaowei
  • wxcaixiaowei
  • 2015年05月29日 14:56
  • 993

以MD5的方式,sha1 生成散列 加密指定字符串

  #region 以MD5的方式加密指定字符串  //*********************************************************************  /...
  • zhiguo2010
  • zhiguo2010
  • 2010年07月08日 19:15
  • 942

得到主键和加密

1,得到主键的方法,第一:通过sysdate来得到, 如:public  String getNM(){ String nm=""; nm=(String) getHibernateTempla...
  • yumolan4325
  • yumolan4325
  • 2018年01月08日 09:16
  • 13
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java用字符串生成的md5,sha1作为数据库主键, 去重
举报原因:
原因补充:

(最多只允许输入30个字)