javaweb 用户注册 密码在哪个层加密

撼地神牛 2016-01-09 09:56:58
加精
如题,密码要进行加密,在js 中加密还是后台action中加密?
...全文
7678 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010344942 2017-04-15
  • 打赏
  • 举报
回复
前端MD5或SHA1加密传到后端就行,满足大部分安全需求了
lifeizhao 2016-11-04
  • 打赏
  • 举报
回复
我值想说 你自己修改自己的密码 拿到就拿到呗 有啥意义
qq_31850743 2016-10-11
  • 打赏
  • 举报
回复
这里好多大神!
leizihaisir 2016-07-28
  • 打赏
  • 举报
回复
据说MD5好像也能被破解
萧逸才 2016-06-15
  • 打赏
  • 举报
回复
没有那么夸张,一般就后台加密而已
machao299 2016-01-26
  • 打赏
  • 举报
回复
撼地神牛 2016-01-18
  • 打赏
  • 举报
回复
非常感觉各位的帮助,谢谢大家,分不多,我看着给啦
hoohyouxi 2016-01-15
  • 打赏
  • 举报
回复
引用 14 楼 zlc1094512300 的回复:
[quote=引用 11 楼 shijing266 的回复:] 对于密码,一直都是一个很敏感的词,js加密是可以的,但是知道了你的加密方式和key,还是有希望能对你的密码进行破解的 目前我所用的也只是密码post 提交,然后在service里面加密保存
这样的话,别人抓包就能拿到明文了。[/quote] 如果使用md5hash加密,拿到明文之后也需要知道,加密时用到的盐、和加密次数。
cattpon 2016-01-15
  • 打赏
  • 举报
回复
引用 19 楼 oHenryCheung 的回复:
[quote=引用 13 楼 zlc1094512300 的回复:] [quote=引用 9 楼 oHenryCheung 的回复:] 前端用户名和密码合法性检查通过后,提交表单前,对密码加密替换(md5,或md5加盐值),再通过网络传输时即使抓包也不能破解
这个方法不错,即使别人知道了js加密算法,加密后的值,不知道盐的值也弄不到明文。[/quote] ************************************************************************************************************************************* js加密类库可以引用开源的: https://github.com/brix/crypto-js md5加盐值是调用CryptoJS.HmacMD5(‘明文’, '盐值') Java端加密

private final static String KEY_MAC = "HmacMD5";
private final static String UTF_8_CHARSET = "UTF-8";

public static String getHmacMD5String(String plainText, String salt) throws NoSuchAlgorithmException, InvalidKeyException, IOException {
		String sEncodedString = null;
        SecretKey key = new SecretKeySpec(salt.getBytes(UTF_8_CHARSET), KEY_MAC);
        Mac mac = Mac.getInstance(KEY_MAC);
        mac.init(key);
        
        byte[] bytes = mac.doFinal(plainText.getBytes(UTF_8_CHARSET));
        StringBuffer hash = new StringBuffer();

		for (int i = 0, len = bytes.length; i < len; i++) {
            String hex = Integer.toHexString(0xFF &  bytes[i]);
            if (hex.length() == 1) {
                hash.append('0');
            }
            hash.append(hex);
        }
        sEncodedString = hash.toString();
        return sEncodedString;
	}
[/quote] 感谢大神分享!
woshimike 2016-01-15
  • 打赏
  • 举报
回复
好吧 。我说下我们公司的对密码的设计, 注册的时候 js采用md5加密 ,然后到后台java 在进行一次md5加密。 这样数据库里面的密码就是经过二次加密的。 在修改密码、登录的时候验证的密码都是用js Md5加密过传到后台,进行验证。 这样在传输过程中,密码都是密文
苏生米沿 2016-01-14
  • 打赏
  • 举报
回复
前后台都需要加密呀
_南天北落 2016-01-14
  • 打赏
  • 举报
回复
引用 13 楼 zlc1094512300 的回复:
[quote=引用 9 楼 oHenryCheung 的回复:] 前端用户名和密码合法性检查通过后,提交表单前,对密码加密替换(md5,或md5加盐值),再通过网络传输时即使抓包也不能破解
这个方法不错,即使别人知道了js加密算法,加密后的值,不知道盐的值也弄不到明文。[/quote] 想安全性高一些,可以使这个。
豫让_______ 2016-01-14
  • 打赏
  • 举报
回复
就我们公司的来看,js加密,后台解密之后验证规则,再另一种加密方式加密。
Usher丶AckMan 2016-01-14
  • 打赏
  • 举报
回复
post提交表单,在controller或者action中加密,然后存取到数据库.Base64可以解密,所以还是用MD5比较安全.
oHenryCheung 2016-01-14
  • 打赏
  • 举报
回复
引用 14 楼 zlc1094512300 的回复:
[quote=引用 11 楼 shijing266 的回复:] 对于密码,一直都是一个很敏感的词,js加密是可以的,但是知道了你的加密方式和key,还是有希望能对你的密码进行破解的 目前我所用的也只是密码post 提交,然后在service里面加密保存
这样的话,别人抓包就能拿到明文了。[/quote] *********************************************************************************************************************************** 引用下网上对md5及md5加盐值的观点 1、算法的公开并不意味着不安全;RSA 的算法也是公开的,AES 也是公开的。现代密码学的安全性从不是靠算法的保密来保证的。2、目前没有软件能有效地破解 MD5。大多数时候只是把常见字符串的 MD5 存了起来为彩虹表,然后直接反查。3、再次强调 MD5 只是哈希,而不是加密。MD5 是没有可能解密的,因为一个 MD5 可能对应无数种可能的明文。4、MD5 目前来说还是可以用的,尤其是考虑到合适的加盐以后可以解决大多数彩虹表带来的危险。当然现在已经很多人提倡用 SHA 系列的哈希算法取代 MD5。 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:kmxz 链接:http://www.zhihu.com/question/22311285/answer/20960705 来源:知乎
oHenryCheung 2016-01-14
  • 打赏
  • 举报
回复
引用 13 楼 zlc1094512300 的回复:
[quote=引用 9 楼 oHenryCheung 的回复:] 前端用户名和密码合法性检查通过后,提交表单前,对密码加密替换(md5,或md5加盐值),再通过网络传输时即使抓包也不能破解
这个方法不错,即使别人知道了js加密算法,加密后的值,不知道盐的值也弄不到明文。[/quote] ************************************************************************************************************************************* js加密类库可以引用开源的: https://github.com/brix/crypto-js md5加盐值是调用CryptoJS.HmacMD5(‘明文’, '盐值') Java端加密

private final static String KEY_MAC = "HmacMD5";
private final static String UTF_8_CHARSET = "UTF-8";

public static String getHmacMD5String(String plainText, String salt) throws NoSuchAlgorithmException, InvalidKeyException, IOException {
		String sEncodedString = null;
        SecretKey key = new SecretKeySpec(salt.getBytes(UTF_8_CHARSET), KEY_MAC);
        Mac mac = Mac.getInstance(KEY_MAC);
        mac.init(key);
        
        byte[] bytes = mac.doFinal(plainText.getBytes(UTF_8_CHARSET));
        StringBuffer hash = new StringBuffer();

		for (int i = 0, len = bytes.length; i < len; i++) {
            String hex = Integer.toHexString(0xFF &  bytes[i]);
            if (hex.length() == 1) {
                hash.append('0');
            }
            hash.append(hex);
        }
        sEncodedString = hash.toString();
        return sEncodedString;
	}
muzi1314_ 2016-01-13
  • 打赏
  • 举报
回复
在传输层加密,应该这个安全些,不过一般项目也就post提交,后台md5加密。
撼地神牛 2016-01-13
  • 打赏
  • 举报
回复
引用 11 楼 shijing266 的回复:
对于密码,一直都是一个很敏感的词,js加密是可以的,但是知道了你的加密方式和key,还是有希望能对你的密码进行破解的 目前我所用的也只是密码post 提交,然后在service里面加密保存
这样的话,别人抓包就能拿到明文了。
撼地神牛 2016-01-13
  • 打赏
  • 举报
回复
引用 9 楼 oHenryCheung 的回复:
前端用户名和密码合法性检查通过后,提交表单前,对密码加密替换(md5,或md5加盐值),再通过网络传输时即使抓包也不能破解
这个方法不错,即使别人知道了js加密算法,加密后的值,不知道盐的值也弄不到明文。
MavenTalk 2016-01-13
  • 打赏
  • 举报
回复
使用https协议,保证数据传输的安全性
加载更多回复(11)
各类的属性和方法: 书籍(Book): 可以将借书还书的活动写成日志,记录到某个文件当中 private Integer id; // 书的id(主键、递增、唯一) private String name; // 书名 private String pos; // 书的位置 private String type; // 书的类型 private String info; // 书的简介 private Integer state; // 书籍状态可以使用单选框来限定 // 书的状态(0表示未被借出,1表示已被借出,2表示被续借,3表示逾期, 4表示丢失,5表示损毁,6表示其他情况) private String remark; // 书的备注 private Integer owner; // 借书的同学的id(还书之后为null) private String borrowBookDate; // 借书的时间(还书之后为null) private String returnBookDate; // 还书的时间(还书之后为null) // 书的总数量(???) 可以直接用SELECT * FROM table where state=0 然后统计list.size() 留言(Evaluation): private Integer evaluationId; // 该留言的id private Integer adminId; // 如果是管理员留言的话,管理员的id private Integer studentId; // 如果是学生留言的话,学生的id private Integer bookId; // 被留言的书的id private String message; // 留言的内容 学生(Student): private Integer id; private String number; private String username; private String password; private String tel; private String email; private Integer credit; // 信誉等级(通过调用不同的函数,根据信誉等级来设置每个同学能借书和续借书的数量) private Integer bookCnt; // 每个月借的书的数量 private Integer bookRenewal; // 每个月能续借的书籍 private String bookId; // 不同的书的id之间使用,分割开 管理员(Admin): private Integer id; private String username; private String password; 登录逻辑: 用户登录之前: 到时候会将项目部署到我的服务器上面,所以会有一个公网IP(项目地址) 输入项目地址,进入index(初始页面): 页面用来展示介绍咱项目的具体内容和信息 并且提供学生的登录、注册以及管理员的注册按钮 (这里可以用别人现成的网页改一下) 学生注册页面: 输入用户的信息进行注册(这些内容都可使用正则表达式进行验证) 学号:必填、不可更改、不可重复(使用Ajax异步进行数据库的连接验证学号是否重复) 密码:长度限制 手机号:格式限制(可能需要发送验证码?) 邮箱:格式限制(可能需要发送验证码?) 最后可能需要验证码? 注册完成之后,Ajax验证注册是否成功 成功:提示用户成功,自动跳转到登录页面 失败:提示用户失败,还是在当前页面 与学生登录和管理员登录之间可以相互跳转(response完成重定向) 注册的时候不要以form表单的形式直接提交信息,要采用ajax,以json的形式,向后台提交信息。 学生登录页面: 登录信息:学号、密码登录 用cookie(加密)使十天内记住账号信息 (提示:为了您的信息安全,请不要在网吧或公用电脑上使用此功能!) 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误) 然后就进入用户模块了 管理员登录页面: 登录信息:用户名、密码登录 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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