Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
datax-cloud
Commits
f0dbb0e5
Commit
f0dbb0e5
authored
Apr 15, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.0.0项目初始化
parent
a3b00baf
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
587 additions
and
57 deletions
+587
-57
DataSetController.java
...ax/service/data/factory/controller/DataSetController.java
+1
-1
DataSourceController.java
...service/data/factory/controller/DataSourceController.java
+1
-1
AlgorithmCrypto.java
.../datax/service/data/market/api/enums/AlgorithmCrypto.java
+11
-6
CipherType.java
...va/cn/datax/service/data/market/api/enums/CipherType.java
+1
-1
RegexCrypto.java
...a/cn/datax/service/data/market/api/enums/RegexCrypto.java
+13
-6
ApiMaskController.java
...ata/market/data/masking/controller/ApiMaskController.java
+2
-2
AbstractFactory.java
...ice/data/market/data/masking/factory/AbstractFactory.java
+10
-0
AlgorithmFactory.java
...ce/data/market/data/masking/factory/AlgorithmFactory.java
+21
-0
FactoryProducer.java
...ice/data/market/data/masking/factory/FactoryProducer.java
+17
-0
RegexFactory.java
...ervice/data/market/data/masking/factory/RegexFactory.java
+21
-0
ADDRESSCrypto.java
...ata/market/data/masking/factory/crypto/ADDRESSCrypto.java
+22
-0
AESCrypto.java
...ce/data/market/data/masking/factory/crypto/AESCrypto.java
+71
-0
AlgorithmRegistry.java
...market/data/masking/factory/crypto/AlgorithmRegistry.java
+24
-0
BANKCARDCrypto.java
...ta/market/data/masking/factory/crypto/BANKCARDCrypto.java
+22
-0
BASE64Crypto.java
...data/market/data/masking/factory/crypto/BASE64Crypto.java
+34
-0
CHINESENAMECrypto.java
...market/data/masking/factory/crypto/CHINESENAMECrypto.java
+22
-0
CNAPSCODECrypto.java
...a/market/data/masking/factory/crypto/CNAPSCODECrypto.java
+22
-0
Crypto.java
...rvice/data/market/data/masking/factory/crypto/Crypto.java
+17
-0
DESCrypto.java
...ce/data/market/data/masking/factory/crypto/DESCrypto.java
+53
-0
EMAILCrypto.java
.../data/market/data/masking/factory/crypto/EMAILCrypto.java
+22
-0
FIXEDPHONECrypto.java
.../market/data/masking/factory/crypto/FIXEDPHONECrypto.java
+22
-0
IDCARDCrypto.java
...data/market/data/masking/factory/crypto/IDCARDCrypto.java
+22
-0
MD5Crypto.java
...ce/data/market/data/masking/factory/crypto/MD5Crypto.java
+29
-0
MOBILEPHONECrypto.java
...market/data/masking/factory/crypto/MOBILEPHONECrypto.java
+22
-0
RegexRegistry.java
...ata/market/data/masking/factory/crypto/RegexRegistry.java
+26
-0
SHA1Crypto.java
...e/data/market/data/masking/factory/crypto/SHA1Crypto.java
+29
-0
SHA256Crypto.java
...data/market/data/masking/factory/crypto/SHA256Crypto.java
+29
-0
ParsedSql.java
...tax/service/data/market/data/masking/utils/ParsedSql.java
+0
-39
DataApiController.java
...tax/service/data/market/controller/DataApiController.java
+1
-1
No files found.
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/controller/DataSetController.java
View file @
f0dbb0e5
...
@@ -77,7 +77,7 @@ public class DataSetController extends BaseController {
...
@@ -77,7 +77,7 @@ public class DataSetController extends BaseController {
@ApiImplicitParam
(
name
=
"dataSetQuery"
,
value
=
"查询实体dataSetQuery"
,
required
=
true
,
dataTypeClass
=
DataSetQuery
.
class
)
@ApiImplicitParam
(
name
=
"dataSetQuery"
,
value
=
"查询实体dataSetQuery"
,
required
=
true
,
dataTypeClass
=
DataSetQuery
.
class
)
})
})
@GetMapping
(
"/page"
)
@GetMapping
(
"/page"
)
public
R
get
Role
Page
(
DataSetQuery
dataSetQuery
)
{
public
R
get
DataSet
Page
(
DataSetQuery
dataSetQuery
)
{
QueryWrapper
<
DataSetEntity
>
queryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
DataSetEntity
>
queryWrapper
=
new
QueryWrapper
<>();
IPage
<
DataSetEntity
>
page
=
dataSetService
.
page
(
new
Page
<>(
dataSetQuery
.
getPageNum
(),
dataSetQuery
.
getPageSize
()),
queryWrapper
);
IPage
<
DataSetEntity
>
page
=
dataSetService
.
page
(
new
Page
<>(
dataSetQuery
.
getPageNum
(),
dataSetQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataSetVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSetMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
List
<
DataSetVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSetMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
...
...
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/controller/DataSourceController.java
View file @
f0dbb0e5
...
@@ -73,7 +73,7 @@ public class DataSourceController extends BaseController {
...
@@ -73,7 +73,7 @@ public class DataSourceController extends BaseController {
@ApiImplicitParam
(
name
=
"dataSourceQuery"
,
value
=
"查询实体dataSourceQuery"
,
required
=
true
,
dataTypeClass
=
DataSourceQuery
.
class
)
@ApiImplicitParam
(
name
=
"dataSourceQuery"
,
value
=
"查询实体dataSourceQuery"
,
required
=
true
,
dataTypeClass
=
DataSourceQuery
.
class
)
})
})
@GetMapping
(
"/page"
)
@GetMapping
(
"/page"
)
public
R
get
Rol
ePage
(
DataSourceQuery
dataSourceQuery
)
{
public
R
get
DataSourc
ePage
(
DataSourceQuery
dataSourceQuery
)
{
QueryWrapper
<
DataSourceEntity
>
queryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
DataSourceEntity
>
queryWrapper
=
new
QueryWrapper
<>();
IPage
<
DataSourceEntity
>
page
=
dataSourceService
.
page
(
new
Page
<>(
dataSourceQuery
.
getPageNum
(),
dataSourceQuery
.
getPageSize
()),
queryWrapper
);
IPage
<
DataSourceEntity
>
page
=
dataSourceService
.
page
(
new
Page
<>(
dataSourceQuery
.
getPageNum
(),
dataSourceQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataSourceVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSourceMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
List
<
DataSourceVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSourceMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
...
...
datax-modules/data-market-service-parent/data-market-service-api/src/main/java/cn/datax/service/data/market/api/enums/AlgorithmCrypt.java
→
datax-modules/data-market-service-parent/data-market-service-api/src/main/java/cn/datax/service/data/market/api/enums/AlgorithmCrypt
o
.java
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
api
.
enums
;
package
cn
.
datax
.
service
.
data
.
market
.
api
.
enums
;
public
enum
AlgorithmCrypt
{
public
enum
AlgorithmCrypt
o
{
EMAIL
(
1
,
"邮箱"
);
BASE64
(
1
,
"BASE64加密"
),
MD5
(
2
,
"MD5加密"
),
SHA_1
(
3
,
"SHA_1加密"
),
SHA_256
(
4
,
"SHA_256加密"
),
AES
(
5
,
"AES加密"
),
DES
(
6
,
"DES加密"
);
private
final
Integer
key
;
private
final
Integer
key
;
private
final
String
val
;
private
final
String
val
;
AlgorithmCrypt
(
Integer
key
,
String
val
)
{
AlgorithmCrypt
o
(
Integer
key
,
String
val
)
{
this
.
key
=
key
;
this
.
key
=
key
;
this
.
val
=
val
;
this
.
val
=
val
;
}
}
...
@@ -21,12 +26,12 @@ public enum AlgorithmCrypt {
...
@@ -21,12 +26,12 @@ public enum AlgorithmCrypt {
return
val
;
return
val
;
}
}
public
static
AlgorithmCrypt
getDataType
(
Integer
algorithmCrypt
)
{
public
static
AlgorithmCrypt
o
getAlgorithmCrypto
(
Integer
algorithmCrypt
)
{
for
(
AlgorithmCrypt
type
:
AlgorithmCrypt
.
values
())
{
for
(
AlgorithmCrypt
o
type
:
AlgorithmCrypto
.
values
())
{
if
(
type
.
key
==
algorithmCrypt
)
{
if
(
type
.
key
==
algorithmCrypt
)
{
return
type
;
return
type
;
}
}
}
}
return
EMAIL
;
return
BASE64
;
}
}
}
}
datax-modules/data-market-service-parent/data-market-service-api/src/main/java/cn/datax/service/data/market/api/enums/CipherType.java
View file @
f0dbb0e5
...
@@ -22,7 +22,7 @@ public enum CipherType {
...
@@ -22,7 +22,7 @@ public enum CipherType {
return
val
;
return
val
;
}
}
public
static
CipherType
get
Data
Type
(
Integer
cipherType
)
{
public
static
CipherType
get
Cipher
Type
(
Integer
cipherType
)
{
for
(
CipherType
type
:
CipherType
.
values
())
{
for
(
CipherType
type
:
CipherType
.
values
())
{
if
(
type
.
key
==
cipherType
)
{
if
(
type
.
key
==
cipherType
)
{
return
type
;
return
type
;
...
...
datax-modules/data-market-service-parent/data-market-service-api/src/main/java/cn/datax/service/data/market/api/enums/RegexCrypt.java
→
datax-modules/data-market-service-parent/data-market-service-api/src/main/java/cn/datax/service/data/market/api/enums/RegexCrypt
o
.java
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
api
.
enums
;
package
cn
.
datax
.
service
.
data
.
market
.
api
.
enums
;
public
enum
RegexCrypt
{
public
enum
RegexCrypt
o
{
MD5
(
1
,
"MD5加密"
);
CHINESE_NAME
(
1
,
"中文姓名"
),
ID_CARD
(
2
,
"身份证号"
),
FIXED_PHONE
(
3
,
"固定电话"
),
MOBILE_PHONE
(
4
,
"手机号码"
),
ADDRESS
(
5
,
"地址"
),
EMAIL
(
6
,
"电子邮箱"
),
BANK_CARD
(
7
,
"银行卡号"
),
CNAPS_CODE
(
8
,
"公司开户银行联号"
);
private
final
Integer
key
;
private
final
Integer
key
;
private
final
String
val
;
private
final
String
val
;
RegexCrypt
(
Integer
key
,
String
val
)
{
RegexCrypt
o
(
Integer
key
,
String
val
)
{
this
.
key
=
key
;
this
.
key
=
key
;
this
.
val
=
val
;
this
.
val
=
val
;
}
}
...
@@ -21,12 +28,12 @@ public enum RegexCrypt {
...
@@ -21,12 +28,12 @@ public enum RegexCrypt {
return
val
;
return
val
;
}
}
public
static
RegexCrypt
getDataType
(
Integer
regexCrypt
)
{
public
static
RegexCrypt
o
getRegexCrypto
(
Integer
regexCrypt
)
{
for
(
RegexCrypt
type
:
RegexCrypt
.
values
())
{
for
(
RegexCrypt
o
type
:
RegexCrypto
.
values
())
{
if
(
type
.
key
==
regexCrypt
)
{
if
(
type
.
key
==
regexCrypt
)
{
return
type
;
return
type
;
}
}
}
}
return
MD5
;
return
CHINESE_NAME
;
}
}
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/controller/ApiMaskController.java
View file @
f0dbb0e5
...
@@ -69,7 +69,7 @@ public class ApiMaskController extends BaseController {
...
@@ -69,7 +69,7 @@ public class ApiMaskController extends BaseController {
@ApiImplicitParam
(
name
=
"apiMaskQuery"
,
value
=
"查询实体apiMaskQuery"
,
required
=
true
,
dataTypeClass
=
ApiMaskQuery
.
class
)
@ApiImplicitParam
(
name
=
"apiMaskQuery"
,
value
=
"查询实体apiMaskQuery"
,
required
=
true
,
dataTypeClass
=
ApiMaskQuery
.
class
)
})
})
@GetMapping
(
"/page"
)
@GetMapping
(
"/page"
)
public
R
get
Role
Page
(
ApiMaskQuery
apiMaskQuery
)
{
public
R
get
ApiMask
Page
(
ApiMaskQuery
apiMaskQuery
)
{
QueryWrapper
<
ApiMaskEntity
>
queryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
ApiMaskEntity
>
queryWrapper
=
new
QueryWrapper
<>();
IPage
<
ApiMaskEntity
>
page
=
apiMaskService
.
page
(
new
Page
<>(
apiMaskQuery
.
getPageNum
(),
apiMaskQuery
.
getPageSize
()),
queryWrapper
);
IPage
<
ApiMaskEntity
>
page
=
apiMaskService
.
page
(
new
Page
<>(
apiMaskQuery
.
getPageNum
(),
apiMaskQuery
.
getPageSize
()),
queryWrapper
);
List
<
ApiMaskVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
apiMaskMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
List
<
ApiMaskVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
apiMaskMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
...
@@ -85,7 +85,7 @@ public class ApiMaskController extends BaseController {
...
@@ -85,7 +85,7 @@ public class ApiMaskController extends BaseController {
@ApiOperation
(
value
=
"添加信息"
,
notes
=
"根据apiMask对象添加信息"
)
@ApiOperation
(
value
=
"添加信息"
,
notes
=
"根据apiMask对象添加信息"
)
@ApiImplicitParam
(
name
=
"apiMask"
,
value
=
"详细实体apiMask"
,
required
=
true
,
dataType
=
"ApiMaskDto"
)
@ApiImplicitParam
(
name
=
"apiMask"
,
value
=
"详细实体apiMask"
,
required
=
true
,
dataType
=
"ApiMaskDto"
)
@PostMapping
()
@PostMapping
()
public
R
save
Data
ApiMask
(
@RequestBody
@Validated
({
ValidationGroups
.
Insert
.
class
})
ApiMaskDto
apiMask
)
{
public
R
saveApiMask
(
@RequestBody
@Validated
({
ValidationGroups
.
Insert
.
class
})
ApiMaskDto
apiMask
)
{
apiMaskService
.
saveApiMask
(
apiMask
);
apiMaskService
.
saveApiMask
(
apiMask
);
return
R
.
ok
();
return
R
.
ok
();
}
}
...
...
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/AbstractFactory.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
;
import
cn.datax.service.data.market.data.masking.factory.crypto.Crypto
;
public
abstract
class
AbstractFactory
{
public
abstract
Crypto
getAlgorithm
(
Integer
type
);
public
abstract
Crypto
getRegex
(
Integer
type
);
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/AlgorithmFactory.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
;
import
cn.datax.service.data.market.api.enums.AlgorithmCrypto
;
import
cn.datax.service.data.market.data.masking.factory.crypto.AlgorithmRegistry
;
import
cn.datax.service.data.market.data.masking.factory.crypto.Crypto
;
public
class
AlgorithmFactory
extends
AbstractFactory
{
private
static
final
AlgorithmRegistry
ALGORITHM_REGISTRY
=
new
AlgorithmRegistry
();
@Override
public
Crypto
getAlgorithm
(
Integer
type
)
{
AlgorithmCrypto
crypto
=
AlgorithmCrypto
.
getAlgorithmCrypto
(
type
);
return
ALGORITHM_REGISTRY
.
getAlgorithm
(
crypto
);
}
@Override
public
Crypto
getRegex
(
Integer
type
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/FactoryProducer.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
;
import
cn.datax.service.data.market.api.enums.CipherType
;
public
class
FactoryProducer
{
public
static
AbstractFactory
getFactory
(
Integer
type
){
CipherType
cipherType
=
CipherType
.
getCipherType
(
type
);
switch
(
cipherType
)
{
case
REGEX:
return
new
RegexFactory
();
case
ALGORITHM:
return
new
AlgorithmFactory
();
}
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/RegexFactory.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
;
import
cn.datax.service.data.market.api.enums.RegexCrypto
;
import
cn.datax.service.data.market.data.masking.factory.crypto.Crypto
;
import
cn.datax.service.data.market.data.masking.factory.crypto.RegexRegistry
;
public
class
RegexFactory
extends
AbstractFactory
{
private
static
final
RegexRegistry
REGEX_REGISTRY
=
new
RegexRegistry
();
@Override
public
Crypto
getAlgorithm
(
Integer
type
)
{
return
null
;
}
@Override
public
Crypto
getRegex
(
Integer
type
)
{
RegexCrypto
crypto
=
RegexCrypto
.
getRegexCrypto
(
type
);
return
REGEX_REGISTRY
.
getRegex
(
crypto
);
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/ADDRESSCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [地址] 只显示前六位,不显示详细地址;我们要对个人信息增强保护<例子:北京市海淀区****>
*/
public
class
ADDRESSCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
rightPad
(
StringUtils
.
left
(
content
,
6
),
StringUtils
.
length
(
content
),
"*"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/AESCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.crypto.*
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.security.SecureRandom
;
import
java.util.Base64
;
public
class
AESCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator
kGen
=
KeyGenerator
.
getInstance
(
"AES"
);
//2.根据 RULES 规则初始化密钥生成器,根据传入的字节数组生成一个128位的随机源
kGen
.
init
(
128
,
new
SecureRandom
(
SLAT
.
getBytes
(
CHARSET_UTF8
)));
//3.产生原始对称密钥
SecretKey
secretKey
=
kGen
.
generateKey
();
//4.获得原始对称密钥的字节数组
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
//5.根据字节数组生成AES密钥
SecretKeySpec
key
=
new
SecretKeySpec
(
enCodeFormat
,
"AES"
);
//6.根据指定算法AES生成密码器
javax
.
crypto
.
Cipher
cipher
=
javax
.
crypto
.
Cipher
.
getInstance
(
"AES"
);
//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
cipher
.
init
(
javax
.
crypto
.
Cipher
.
ENCRYPT_MODE
,
key
);
//8.根据密码器的初始化方式--加密:将数据加密
byte
[]
AES_encrypt
=
cipher
.
doFinal
(
content
.
getBytes
(
CHARSET_UTF8
));
//9.将字符串返回
return
Base64
.
getEncoder
().
encodeToString
(
AES_encrypt
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
@Override
public
String
decrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator
kGen
=
KeyGenerator
.
getInstance
(
"AES"
);
//2.根据 RULES 规则初始化密钥生成器,根据传入的字节数组生成一个128位的随机源
kGen
.
init
(
128
,
new
SecureRandom
(
SLAT
.
getBytes
(
CHARSET_UTF8
)));
//3.产生原始对称密钥
SecretKey
secretKey
=
kGen
.
generateKey
();
//4.获得原始对称密钥的字节数组
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
//5.根据字节数组生成AES密钥
SecretKeySpec
key
=
new
SecretKeySpec
(
enCodeFormat
,
"AES"
);
//6.根据指定算法AES生成密码器
javax
.
crypto
.
Cipher
cipher
=
javax
.
crypto
.
Cipher
.
getInstance
(
"AES"
);
//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
// 初始化
//8.根据密码器的初始化方式--加密:将数据加密
byte
[]
AES_decode
=
cipher
.
doFinal
(
Base64
.
getDecoder
().
decode
(
content
));
return
new
String
(
AES_decode
,
CHARSET_UTF8
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/AlgorithmRegistry.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
cn.datax.service.data.market.api.enums.AlgorithmCrypto
;
import
java.util.EnumMap
;
import
java.util.Map
;
public
class
AlgorithmRegistry
{
private
final
Map
<
AlgorithmCrypto
,
Crypto
>
algorithm_enum_map
=
new
EnumMap
<>(
AlgorithmCrypto
.
class
);
public
AlgorithmRegistry
()
{
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
BASE64
,
new
BASE64Crypto
());
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
AES
,
new
AESCrypto
());
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
DES
,
new
DESCrypto
());
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
MD5
,
new
MD5Crypto
());
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
SHA_1
,
new
SHA1Crypto
());
algorithm_enum_map
.
put
(
AlgorithmCrypto
.
SHA_256
,
new
SHA256Crypto
());
}
public
Crypto
getAlgorithm
(
AlgorithmCrypto
crypto
)
{
return
algorithm_enum_map
.
get
(
crypto
);
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/BANKCARDCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [银行卡号] 前六位,后四位,其他用星号隐藏每位1个星号<例子:6222600**********1234>
*/
public
class
BANKCARDCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
left
(
content
,
6
).
concat
(
StringUtils
.
removeStart
(
StringUtils
.
leftPad
(
StringUtils
.
right
(
content
,
4
),
StringUtils
.
length
(
content
),
"*"
),
"******"
));
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/BASE64Crypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.Base64
;
public
class
BASE64Crypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
byte
[]
encode
=
Base64
.
getEncoder
().
encode
(
content
.
getBytes
(
CHARSET_UTF8
));
return
new
String
(
encode
,
CHARSET_UTF8
);
}
catch
(
Exception
e
)
{
}
return
null
;
}
@Override
public
String
decrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
byte
[]
decode
=
Base64
.
getDecoder
().
decode
(
content
.
getBytes
(
CHARSET_UTF8
));
return
new
String
(
decode
,
CHARSET_UTF8
);
}
catch
(
Exception
e
)
{
}
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/CHINESENAMECrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [中文姓名] 只显示第一个汉字,其他隐藏为星号<例子:李**>
*/
public
class
CHINESENAMECrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
rightPad
(
StringUtils
.
left
(
content
,
1
),
StringUtils
.
length
(
content
),
"*"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/CNAPSCODECrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [公司开户银行联号] 公司开户银行联行号,显示前四位,其他用星号隐藏,每位1个星号<例子:1234********>
*/
public
class
CNAPSCODECrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
rightPad
(
StringUtils
.
left
(
content
,
4
),
StringUtils
.
length
(
content
),
"*"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/Crypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
public
interface
Crypto
{
/**
* 字符编码
*/
String
CHARSET_UTF8
=
"UTF-8"
;
/**
* 密码盐
*/
String
SLAT
=
"DATAX:20200101"
;
String
encrypt
(
String
content
);
String
decrypt
(
String
content
);
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/DESCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.crypto.*
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.security.SecureRandom
;
import
java.util.Base64
;
public
class
DESCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
KeyGenerator
kGen
=
KeyGenerator
.
getInstance
(
"DES"
);
kGen
.
init
(
56
,
new
SecureRandom
(
SLAT
.
getBytes
(
CHARSET_UTF8
)));
SecretKey
secretKey
=
kGen
.
generateKey
();
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
SecretKeySpec
key
=
new
SecretKeySpec
(
enCodeFormat
,
"DES"
);
javax
.
crypto
.
Cipher
cipher
=
javax
.
crypto
.
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
javax
.
crypto
.
Cipher
.
ENCRYPT_MODE
,
key
);
byte
[]
DES_encrypt
=
cipher
.
doFinal
(
content
.
getBytes
(
CHARSET_UTF8
));
return
Base64
.
getEncoder
().
encodeToString
(
DES_encrypt
);
}
catch
(
Exception
e
)
{
}
return
null
;
}
@Override
public
String
decrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
try
{
KeyGenerator
kGen
=
KeyGenerator
.
getInstance
(
"DES"
);
kGen
.
init
(
56
,
new
SecureRandom
(
SLAT
.
getBytes
(
CHARSET_UTF8
)));
SecretKey
secretKey
=
kGen
.
generateKey
();
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
SecretKeySpec
key
=
new
SecretKeySpec
(
enCodeFormat
,
"DES"
);
javax
.
crypto
.
Cipher
cipher
=
javax
.
crypto
.
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
byte
[]
DES_decrypt
=
cipher
.
doFinal
(
Base64
.
getDecoder
().
decode
(
content
));
return
new
String
(
DES_decrypt
,
CHARSET_UTF8
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/EMAILCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [电子邮箱] 只显示前三后显示邮箱后缀,其他隐藏为星号<例子:312****@qq.com>
*/
public
class
EMAILCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
content
.
replaceAll
(
"(\\w{3}).*@(\\w+)"
,
"$1****@$2"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/FIXEDPHONECrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [固定电话] 后四位,其他隐藏<例子:****1234>
*/
public
class
FIXEDPHONECrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
leftPad
(
StringUtils
.
right
(
content
,
4
),
StringUtils
.
length
(
content
),
"*"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/IDCARDCrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [身份证号] 显示最后四位,其他隐藏。共计18位或者15位。<例子:*************5762>
*/
public
class
IDCARDCrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
leftPad
(
StringUtils
.
right
(
content
,
4
),
StringUtils
.
length
(
content
),
"*"
);
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/MD5Crypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
java.security.MessageDigest
;
import
java.util.Base64
;
public
class
MD5Crypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
MessageDigest
md5
=
null
;
try
{
md5
=
MessageDigest
.
getInstance
(
"MD5"
);
md5
.
update
(
content
.
getBytes
(
CHARSET_UTF8
));
md5
.
update
(
SLAT
.
getBytes
(
CHARSET_UTF8
));
}
catch
(
Exception
e
)
{
}
return
Base64
.
getEncoder
().
encodeToString
(
md5
.
digest
());
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/MOBILEPHONECrypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
/**
* [手机号码] 前三位,后四位,其他隐藏<例子:138******1234>
*/
public
class
MOBILEPHONECrypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
return
StringUtils
.
left
(
content
,
3
).
concat
(
StringUtils
.
removeStart
(
StringUtils
.
leftPad
(
StringUtils
.
right
(
content
,
4
),
StringUtils
.
length
(
content
),
"*"
),
"***"
));
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/RegexRegistry.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
cn.datax.service.data.market.api.enums.RegexCrypto
;
import
java.util.EnumMap
;
import
java.util.Map
;
public
class
RegexRegistry
{
private
final
Map
<
RegexCrypto
,
Crypto
>
regex_enum_map
=
new
EnumMap
<>(
RegexCrypto
.
class
);
public
RegexRegistry
()
{
regex_enum_map
.
put
(
RegexCrypto
.
CHINESE_NAME
,
new
CHINESENAMECrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
ID_CARD
,
new
IDCARDCrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
FIXED_PHONE
,
new
FIXEDPHONECrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
MOBILE_PHONE
,
new
MOBILEPHONECrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
ADDRESS
,
new
ADDRESSCrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
EMAIL
,
new
EMAILCrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
BANK_CARD
,
new
BANKCARDCrypto
());
regex_enum_map
.
put
(
RegexCrypto
.
CNAPS_CODE
,
new
CNAPSCODECrypto
());
}
public
Crypto
getRegex
(
RegexCrypto
crypto
)
{
return
regex_enum_map
.
get
(
crypto
);
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/SHA1Crypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
java.security.MessageDigest
;
import
java.util.Base64
;
public
class
SHA1Crypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
MessageDigest
md5
=
null
;
try
{
md5
=
MessageDigest
.
getInstance
(
"SHA-1"
);
md5
.
update
(
content
.
getBytes
(
CHARSET_UTF8
));
md5
.
update
(
SLAT
.
getBytes
(
CHARSET_UTF8
));
}
catch
(
Exception
e
)
{
}
return
Base64
.
getEncoder
().
encodeToString
(
md5
.
digest
());
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/factory/crypto/SHA256Crypto.java
0 → 100644
View file @
f0dbb0e5
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
factory
.
crypto
;
import
org.apache.commons.lang3.StringUtils
;
import
java.security.MessageDigest
;
import
java.util.Base64
;
public
class
SHA256Crypto
implements
Crypto
{
@Override
public
String
encrypt
(
String
content
)
{
if
(
StringUtils
.
isBlank
(
content
))
{
return
null
;
}
MessageDigest
md5
=
null
;
try
{
md5
=
MessageDigest
.
getInstance
(
"SHA-256"
);
md5
.
update
(
content
.
getBytes
(
CHARSET_UTF8
));
md5
.
update
(
SLAT
.
getBytes
(
CHARSET_UTF8
));
}
catch
(
Exception
e
)
{
}
return
Base64
.
getEncoder
().
encodeToString
(
md5
.
digest
());
}
@Override
public
String
decrypt
(
String
content
)
{
return
null
;
}
}
datax-modules/data-market-service-parent/data-market-service-data-masking/src/main/java/cn/datax/service/data/market/data/masking/utils/ParsedSql.java
deleted
100644 → 0
View file @
a3b00baf
package
cn
.
datax
.
service
.
data
.
market
.
data
.
masking
.
utils
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.Serializable
;
public
class
ParsedSql
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
public
static
void
main
(
String
[]
args
)
{
/**
* 显示前三后四,其他隐藏为星号<例子:187****2488>
*/
String
phone
=
"18771632488"
;
System
.
out
.
println
(
phone
.
replaceAll
(
"(\\d{3}).*(\\d{4})"
,
"$1****$2"
));
/**
* 显示前三后四,其他隐藏为星号<例子:421****464X>
*/
String
idCard
=
"421302199208165464X"
;
System
.
out
.
println
(
idCard
.
replaceAll
(
"(\\d{3}).*(\\w{4})"
,
"$1****$2"
));
/**
* 只显示前三后显示邮箱后缀,其他隐藏为星号<例子:312****@qq.com>
*/
String
email
=
"312075478@qq.com"
;
System
.
out
.
println
(
email
.
replaceAll
(
"(\\w{3}).*@(\\w+)"
,
"$1****@$2"
));
/**
* 只显示第一位,其他隐藏为星号<例子:张**>
*/
String
name
=
"张三"
;
System
.
out
.
println
(
StringUtils
.
rightPad
(
StringUtils
.
left
(
name
,
1
),
StringUtils
.
length
(
name
),
"*"
));
/**
* 显示最后四位,其他隐藏为星号<例子:*************5762>
*/
String
other
=
"4213021992081655762"
;
System
.
out
.
println
(
StringUtils
.
leftPad
(
StringUtils
.
right
(
other
,
4
),
StringUtils
.
length
(
other
),
"*"
));
}
}
datax-modules/data-market-service-parent/data-market-service/src/main/java/cn/datax/service/data/market/controller/DataApiController.java
View file @
f0dbb0e5
...
@@ -71,7 +71,7 @@ public class DataApiController extends BaseController {
...
@@ -71,7 +71,7 @@ public class DataApiController extends BaseController {
@ApiImplicitParam
(
name
=
"dataApiQuery"
,
value
=
"查询实体dataApiQuery"
,
required
=
true
,
dataTypeClass
=
DataApiQuery
.
class
)
@ApiImplicitParam
(
name
=
"dataApiQuery"
,
value
=
"查询实体dataApiQuery"
,
required
=
true
,
dataTypeClass
=
DataApiQuery
.
class
)
})
})
@GetMapping
(
"/page"
)
@GetMapping
(
"/page"
)
public
R
get
Role
Page
(
DataApiQuery
dataApiQuery
)
{
public
R
get
DataApi
Page
(
DataApiQuery
dataApiQuery
)
{
QueryWrapper
<
DataApiEntity
>
queryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
DataApiEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
select
(
"id"
,
"status"
,
"create_time"
,
"api_name"
,
"api_version"
,
"api_url"
,
"req_method"
,
"res_type"
,
"remark"
);
queryWrapper
.
select
(
"id"
,
"status"
,
"create_time"
,
"api_name"
,
"api_version"
,
"api_url"
,
"req_method"
,
"res_type"
,
"remark"
);
IPage
<
DataApiEntity
>
page
=
dataApiService
.
page
(
new
Page
<>(
dataApiQuery
.
getPageNum
(),
dataApiQuery
.
getPageSize
()),
queryWrapper
);
IPage
<
DataApiEntity
>
page
=
dataApiService
.
page
(
new
Page
<>(
dataApiQuery
.
getPageNum
(),
dataApiQuery
.
getPageSize
()),
queryWrapper
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment