栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 物联网 > 通讯技术

一个java工程师必知的安全意识(信息传输篇)

通讯技术 更新时间:发布时间: 百科书网 趣学号

我们在遇到涉及用户密码,用户联系方式,身份证信息等敏感字段的时候,一般的处理方式是:

1.传输使用密文,拒绝明文传输用户密码,推荐明文加盐加密,后台再解密
比如要传输的明文是123456的明文密码,我们一般要做以下处理
前台:
	var data = "123456";
	1.明文加随机盐(随机盐随机个数在加密解密时统一即可,这里以18位为例):
		var newData = randomString(18)+data;
	2.公钥加密:
		var pwd = 公钥加密方法(newData);
		具体js下载和使用可参考这里,免费的:https://www.bootcdn.cn/jsencrypt/
		
后台:
	1.私钥解密
		String data = 私钥解密方法(pwd);
	2.去掉前18为随机盐
		字符串截取即可
//上面的公钥加密的样例实现
var 公钥加密方法 = function(明文,公钥) {
    if(公钥 == undefined){
        //没有传公钥就用默认的
        公钥 = 'asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd'
    }
    var jsencrypt = new JSEncrypt();
    jsencrypt.setPublicKey(公钥);
    return jsencrypt.encrypt(randomString(18)+明文);
}
//外面使用:
var olddata = '123456';
var newdata = 公钥加密方法(olddata );
2.后台日志中禁止打印明文密码,这时候可以用@JSONField(serialize=false)来防止打印出不想打印的属性

@JSONField(serialize=false)是阿里的fastJson的一个注解
比如你使用JsonUtil.toJSONString(Xxx类)打印一个类的时候,又不想打印类中的某个字段,就可以在改字段上加这个注解
比如:

	@JSONField(serialize=false)
    private String password;

需要注意的是,如果这个属性被final修饰,那么这个注解貌似是不起作用的

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/852641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号