数据安全的重要性

数据安全的重要性
数据安全
数据安全有对⽴的两⽅⾯的含义:⼀是数据本⾝的安全,主要是指采⽤现代密码算法对数据进⾏主动保护,如数据保密、数据完整性、双向强⾝份认证等,⼆是数据防护的安全,主要是采⽤现代信息存储⼿段对数据进⾏主动防护,如通过磁盘阵列、数据备份、异地容灾等⼿段保证数据的安全,数据安全是⼀种主动的包含措施,数据本⾝的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种。
数据加密(Java)
数据分为:静态数据和动态数据。加密⽅式也有所不同。保护⽅法可分为:加密、签名、令牌化(假名化和匿名化)、数据屏蔽和透明⽂件加密。对数据的保护,要依据数据的类型,以及业务场景具体分析,不能⼀概⽤数据加密来对数据进⾏保护。例如:⾦融公司就⽆法对财务数据进⾏加密,因为⼀旦加密后,就⽆法做模糊查询和⽐值查询。但财务数据也很重要。因此要站在数据保护的视⾓对数据进⾏处理,⽽不能⽤数据加密的⽅法进⾏处理。另外,此问题在其他作者的回答中,提到了DLP(数据防泄漏),本⼈认为略有不妥。DLP是⼀种保护⼿段,只是对数据进⾏⿊⽩名单处理或对⽂件进⾏标签处理,最终管控的是数据或⽂件在通讯层上的流转,只能称为保护⼿段,⽽并不是⼀种加密⽅法。
Java常见的加密⽅式
为什么数据要加密呢?
所以在互联⽹当今,数据安全是⾄关重要的,对于敏感数据,加密请求参数,各种签名验证也是⾮常重要的,作为开发⼈员更需要有安全意识,⽐如对外接⼝设置,请求在⽹关层进⾏相应的隔离!
数据加密⽅式 (⽀付宝加密)
····对称加密原理
对称加密:对称加密加密和解密使⽤同⼀个密钥。 加密过程如下:
加密:原⽂ + 密匙 = 密⽂
解密:密⽂ - 密匙 = 原⽂
前端请求参数
后端参数处理
·····什么是⾮对称加密?
⾮对称加密算法的密匙是通过⼀系列算法获取到的⼀长串随机数,通常随机数的长度越长,加密信息越安全。通过私钥经过⼀系列算法是可以推导出公钥的,也就是说,公钥是基于私钥⽽存在的。但是⽆法通过公钥反向推倒出私钥,这个过程的单向的。
信息安全过程中,接收⽅只需要保管好⾃⼰的私钥不泄露即可。
同样,当接收⽅向发送⽅发送消息时,接收⽅将密⽂通过原发送⽅的公钥进⾏加密
对称加密:高频高压电源
优点:算法简单,加密解密容易,效率⾼,执⾏快。
缺点:相对来说不算特别安全,只有⼀把钥匙,密⽂如果被拦截,且密钥也被劫持,那么,信息很容易被破译。
⾮对称加密:
优点:安全,即使密⽂被拦截、公钥被获取,但是⽆法获取到私钥,也就⽆法破译密⽂。作为接收⽅,务必要保管好⾃⼰的密钥。
缺点:加密算法及其复杂,安全性依赖算法与密钥,⽽且加密和解密效率很低。
什么是数字证书?
数字证书有点类似于我们的居民⾝份证,只是数字证书是基于互联⽹通信的,⽤于标记通信双⽅⾝份的⼀种⽅式。数字证书是由权威机构Certificate
Authority发⾏的,⼜称之为证书授权,简称为:CA。⼈们在⽹上可以根据它来识别对⽅⾝份信息。
数字证书绑定了公钥及其持有者的真实⾝份,它类似于现实⽣活中的居民⾝份证,所不同的是数字证书不再是纸质的证照,⽽是⼀段含有证书持有者⾝份信息并经过认证中⼼审核签发的电⼦数据,⼴泛⽤在电⼦商务和移动互联⽹中
四:什么是数字签名?
数字签名是指将摘要信息使⽤接收者的公钥进⾏加密,与密⽂⼀起发送给接收者。接收者使⽤⾃⼰的私钥对摘要信息进⾏解密,然后使⽤Hash函数对收到的密⽂产⽣⼀个摘要信息,然后将摘要信息与发送着传输过来解密后的摘要信息对⽐是否⼀致。如果⼀致,则表明数据信息没有被篡改。
也就是说,数字签名能够验证收到的信息的完整性,避免中途信息被劫持篡改或丢失。对⽅可以根据数字签名来判断获取到的数据信息时候是最原始的数据
签名JWT(登录时token 或者按需⽣成签名信息)
对于请求,我们需要⼀下⽤户信息,如果能按照⼀定的规则⽣成,并且加密⽤户信息,放在请求头,每次请求都会有携带,后端(服务层可以去解析⽤户信息,可以极⼤提安全性),并且在gateWay(⽹关层⾯对请求限制),必须携带⽤户信息,这也是符合当今的⼀种安全信息设置!
JWT原理
SON Web Token (or
JWT)只是⼀个包含某种意义数据的JSON串。它最重要的特性就是,为了确认它是否有效,我们只需要看JWT本⾝的内容,⽽不需要借助于第三⽅服务或者在多个请求之间将其保存在内存中-这是因为它本⾝携带了信息验证码MAC(Message
Authentication Code)。
⼀个JWT包含3个部分:头部Header,数据Payload,签名Signature。让我们逐个来了解⼀下,先从Payload开始吧。
JWT Payload看起来是怎样的呢?
Payload只是⼀个普通的Javascript
对象。对于payload的内容,JWT是没有任何限制的,但必须注意的是,JWT是没有加密的。因此,任何放在token⾥⾯的信息,如果被截获了,对任何⼈别⼈是可读的。因此,我们不应该在Payload⾥⾯存放任何⿊客可以利⽤的⽤户信息。
JWT Header – 为什么是必须的?
Payload的内容在接收者端是通过签名(Signature)来校验的。不过存在多种类型的签名,因此,接收者需要知道使⽤的是哪种类型的签名。
这种关于token本⾝的元数据信息存放在另外的Javascript对象⾥⾯,并随着Payload⼀起发送给客户。这个独⽴的对象就是⼀个JSON对象,叫JWT
Header,它也是普通的Javascript对象,在这⾥⾯我们可以看到签名类型信息,⽐如RS256。
JWT⽣成token长啥样呢?(⼀串字符,三部分组成,“.”隔开 )
(Header.Payload.Signature)(原理性的东西还很多,可⾃⼰去了解)
package;
import SimpleDateFormat;
import Base64;
import Date;
import HashMap;
import Map;
import*;
import Keys;
import SecretKey;
/**
* @Description: 签名JWT⼯具包
* @Author: liaocongcong
真空管道磁悬浮列车* @Date: 2021/10/17 15:48
*/
public class JwtUtils {
private static final long EXPIRE =60*1000;//过期时间
public static final SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);//密钥,动态⽣成的密钥
/**
* ⽣成token
*
* @param claims 要传送消息map
* @return
*/
public static String generate(Map<String, Object> claims){
Date nowDate =new Date();
//过期时间,设定为⼀分钟
Date expireDate =new Date(System.currentTimeMillis()+ EXPIRE);
//头部信息,可有可⽆
Map<String, Object> header =new HashMap<>(2);
header.put("typ","jwt");
//更强的密钥,JDK11起才能⽤
//  KeyPair keyPair = Keys.keyPairFor(SignatureAlgorithm.RS256);
//  PrivateKey key1 =  Private();  // 私钥
//PublicKey key2 =  Public();  //公钥
return Jwts.builder().setHeader(header)
/
/ .setSubject("weimi")//主题
// .setIssuer("weimi") //发送⽅
.setClaims(claims)//⾃定义claims
.setIssuedAt(nowDate)//当前时间
.setExpiration(expireDate)//过期时间
.signWith(key)//签名算法和key
pact();
}
/**
* ⽣成token
*
* @param header 传⼊头部信息map
* @param claims 要传送消息map
* @return
*/
public static String generate(Map<String, Object> header, Map<String, Object> claims){        Date nowDate =new Date();
//过期时间,设定为⼀分钟
Date expireDate =new Date(System.currentTimeMillis()+ EXPIRE);
return Jwts.builder().setHeader(header)
// .setSubject("weimi")//主题
//    .setIssuer("weimi") //发送⽅
.setClaims(claims)//⾃定义claims
.setIssuedAt(nowDate)//当前时间
.setExpiration(expireDate)//过期时间
.signWith(key)//签名算法和key
pact();
}
/**
* 校验是不是jwt签名
*
* @param token
* @return
*/
public static boolean isSigned(String token){
return Jwts.parser()
.setSigningKey(key)
.isSigned(token);
}
/**
* 校验签名是否正确
*
* @param token
* @return
*/
public static boolean verify(String token){
try{
Jwts.parser()
.setSigningKey(key)
.parseClaimsJws(token);
return true;
}catch(JwtException e){
System.out.Message());
return false;
}
}
/
**
* 获取payload 部分内容(即要传的信息)
* 使⽤⽅法:如获取userId:getClaim(token).get("userId");
*
* @param token
* @return
*/
public static Claims getClaim(String token){
Claims claims =null;
try{
claims = Jwts.parser()
.
setSigningKey(key)
.parseClaimsJws(token)
.getBody();
}catch(Exception e){
e.printStackTrace();
}
return claims;
}
/**
/**
* 获取头部信息map
* 使⽤⽅法 : getHeader(token).get("alg");
*
* @param token
* @return
*/
public static JwsHeader getHeader(String token){
JwsHeader header =null;
try{
header = Jwts.parser()
.setSigningKey(key)
.parseClaimsJws(token)
.
getHeader();
}catch(Exception e){
e.printStackTrace();
}
番茄加速
return header;
}
/**
* 获取jwt发布时间
*/
public static Date getIssuedAt(String token){
return getClaim(token).getIssuedAt();
}
/**
* 获取jwt失效时间
*/
public static Date getExpiration(String token){
return getClaim(token).getExpiration();
}
/**蚀刻液再生
* 验证token是否失效
*
* @param token
* @return true:过期  false:没过期
*/
public static boolean isExpired(String token){
try{
final Date expiration =getExpiration(token);
return expiration.before(new Date());
}catch(ExpiredJwtException expiredJwtException){
return true;
}
}
/**
* 直接Base64解密获取header内容
*
* @param token
* @return
*/
public static String getHeaderByBase64(String token){
String header =null;
if(isSigned(token)){低频声波吹灰器
try{
byte[] header_byte = Decoder().decode(token.split("\\.")[0]);                header =new String(header_byte);
}catch(Exception e){
e.printStackTrace();
return null;
}
3d视频制作}
return header;
}

本文发布于:2024-09-22 18:20:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/105245.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   信息   加密   签名   请求   获取   对称   算法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议