如何用java对数据加密,生成的密文是唯一的

fengran22 2007-08-09 03:40:20
我想实现java对密码加密.然后生成的密文是唯一的.然后再放到数据库里面去.
前提是不能每次加密后把生成的密文和已有的密文作对比啊.那样太慢了.如果有几百万条数据,那得对比到什么时候啊.
就像用移动充值卡那样.只要提供卡上得密码就可以充值.移动他们得密码也是经过加密存在数据库里得吧.要充值是用这个密码去查询出来才能充啊. 要是用随机数加密.有可能不一样得密码产生一样得密文啊.请教高手!!谢谢!!!
...全文
538 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengran22 2007-08-23
  • 打赏
  • 举报
回复
谢谢testejbzdx()了. 我去试试.看来只能做个判断了.
再次感谢!!
iihero 2007-08-13
  • 打赏
  • 举报
回复
:testejbzdx()
说的很对。虽然MD5有极小的可能发生碰撞,但那种几率非常低。
fengran22 2007-08-10
  • 打赏
  • 举报
回复
加索引了太慢了啊,还有这种情况,如果用户来充值那么还得把明文加密为密文.然后密文和库里得密文对比验证.怎么能保证不一样得明文加密后生成不一样得密文啊?
testejbzdx 2007-08-10
  • 打赏
  • 举报
回复
用户提供的是明文,数据库里面存储的是密文
不管怎么样,加密也好,解密也好,如果要比较相等性,这两个过程肯定要有一个,这个是没有选择的,需要提高性能的话只能做两点:
1、将用户的明文加密为密文后再与数据库中的比较,原因是这样只加密一次就可以,如果解密的话就要把数据库的密文全部解密,这是不现实的
2、在密文所在的列上建立索引,增加搜索速度,这个速度增长是很显著的,虽然会失去一些插入性能。
3、将对应的SQL写成存储过程。省去预编译的时间。这个速度的提高也是很明显的。

至于你说的“怎么能保证不一样得明文加密后生成不一样得密文”
MD5就可以
MD5有两个特性:
1、任意两段明文数据,加密以后的密文不会是相同的
2、任意一段明文数据,经过加密以后,其结果永远是不变的

网上MD5加密的类应该有写好的

大致上方法就是这样了,都做到的话应该没有问题了,不会影响你的性能的
testejbzdx 2007-08-09
  • 打赏
  • 举报
回复
就是加密以后再对比吧,如果慢的话,在需要对比的基准列上创建一个索引就可以了

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧