文档章节

使用SecureRandom踩的坑

红发-
 红发-
发布于 2017/03/17 15:37
字数 357
阅读 367
收藏 0

场景:最近在写一个注册服务的时候,注册密码采用的是SHA256+盐的方式,其中使用SecureRandom来生成随机盐;这里存在一个严重的坑就是SecureRandom的性能问题。该问题困扰了很久,使用本机启动服务访问注册服务都是毫秒级,但部署到linux服务器上就到了分钟级,这导致网关那边无限超时,功能无法正常使用。先查了问题看到有报数据库异常是mysql8小时问题,于是把mysql的wait_timeout改为了8小时,同时tomcat连接池增加查询心态机制(mysql8小时),调整好后,但未能真正解决服务响应慢的结局,最终发现是SecureRandom引起的问题

String result = transactionTemplate.execute(new TransactionCallback<String>() {
    @Override
    public String doInTransaction(TransactionStatus status) {
        String result = null;
        try {
            // 生成唯一标识
            String uid = Uid();
            // 生成盐
            byte[] bytes = SecureRandom.getSeed(32);
            String salt = Base64.encodeBuffer(bytes);
            // 加密密码
            String cipherPassword = CipherUtils.SHA256(password + salt);
            //具体业务

            result = uid;
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
            status.setRollbackOnly();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            status.setRollbackOnly();
        }

        return result;
    }
});

 

具体解决方案及参考:

添加启动参数 -Djava.security.egd=file:/dev/./urandom,由于Linux生成随机数机制跟window不同,所以加上这个就可以避免生成随机数时时快时慢的问题

http://stackoverflow.com/questions/28201794/slow-startup-on-tomcat-7-0-57-because-of-securerandom

http://www.tuicool.com/articles/JfiQjiu

 

 

 

© 著作权归作者所有

红发-
粉丝 3
博文 33
码字总数 39368
作品 0
长沙
私信 提问
react-native下遇到的坑,在这里都可以解决

React-Native android在windows下的踩坑记 坑很多,跳之前做好准备。没有VPN的同学请浏览完本文后慎行。 你需要先安装最新版本的node.js(我最后使用的是v4.1.2),前往官网下载>> 注:我win...

hqxluoyang
2015/10/27
151
0
每日一博 | 基于 Docker 搭建 MySQL 主从复制

本篇博文相对简单,因为是初次使用 Docker ,MySQL 的主从复制之前也在 Centos 环境下搭建过,但是也忘的也差不多了,因此本次尝试在 Docker 中搭建。根据网上教程走还是踩了一些坑,不过所幸...

王练
2018/05/11
108
3
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)

系列目录 一、安装MySql 二、安装并破解Navicat 三、没有my.in配置文件怎么办 四、设置MySql的大小写敏感 五、重置MySql登陆密码 这一篇可以说是我的踩坑的血泪史了。。。 MySql在Windows下默...

在7楼
2018/07/30
0
0
centos 7( linux )下搭建elasticsearch踩坑记

目录 概述 环境准备 elasticsearch配置 启动踩坑记 彩蛋 概述 公司最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。 本文旨在单机版的e...

java_龙
2018/10/17
533
4
福利 | 书山有路“坑”为径,据说你踩过的坑可以换书!

作为一名程序员,最苦逼的是什么? 没错……就是一脸懵逼地踩上了各种光怪陆离的坑! 说起那些年我们踩过的坑,可谓是多种多样:有一不小心格式化后整个集群不可用的;有手残delete却无法撤销...

2018/04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
9
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
9
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
9
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
11
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部