# encryption-tools
**Repository Path**: rstyro/encryption-tools
## Basic Information
- **Project Name**: encryption-tools
- **Description**: 一个常用的加密工具
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-10
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Quick start
## Maven 引入
```
top.lrshuai.encryption
encryption-tools
1.0.3
```
## Gradle 引入
```
// https://mvnrepository.com/artifact/top.lrshuai.encryption/encryption-tools
compile group: 'top.lrshuai.encryption', name: 'encryption-tools', version: '1.0.3'
```
### 一个加密工具类
+ SHAUtil
+ SHA加密,有SHA1、SHA224,代码调用
```
public static void main(String[] args) throws Exception {
String key = "www.lrshuai.top";
System.out.println(jdkSHA1(key));
System.out.println(bcSHA1(key));
System.out.println(bcSHA224(key));
System.out.println(bcSHA224Two(key));
}
```
+ MDUtil
+ MD加密,有:MD5、MD4、MD2加密,有不同的实现:jdk、bc、cc,使用如下:
```
public static void main(String[] args) throws Exception {
String key = "www.lrshuai.top";
System.out.println(jdkMD5(key));
System.out.println(jdkMD2(key));
System.out.println(bcMD4(key));
System.out.println(bcMD42(key));
System.out.println(bcMD5(key));
System.out.println(ccMD5(key));
System.out.println(ccMD2(key));
}
```
+ RsaUtil
+ rsa加解密工具,包含生成公私钥,签名验证、加解密,使用如下:
```
public static void main(String[] args) throws Exception {
Map keyMap = genKeyPair();
String myPublicKey = keyMap.get(RsaUtil.PUBLIC_KEY);
String myPrivateKey = keyMap.get(RsaUtil.PRIVATE_KEY);
String text = "我是需要加密的文本abc";
String encodePublicKey = RsaUtils.encodeBase64PublicKey(myPublicKey, text);
String encodePrivateKey = RsaUtils.encodeBase64PrivateKey(myPrivateKey, text);
System.out.println("公钥加密=" + encodePublicKey);
System.out.println("私钥加密=" + encodePrivateKey);
// 私钥加密公钥解密
String decodeByPublicKey = RsaUtils.decodeBase64ByPublicKey(myPublicKey, encodePrivateKey);
// 公钥加密私钥解密
String decodeByPrivate = RsaUtils.decodeBase64ByPrivate(myPrivateKey, encodePublicKey);
System.out.println();
System.out.println("私钥解密=" + decodeByPrivate);
System.out.println("公钥解密=" + decodeByPublicKey);
String sign = RsaUtils.sign(RsaUtils.SIGNATURE_SHA1_ALGORITHM, myPrivateKey, text.getBytes());
System.out.println("sign=" + sign);
boolean verify = RsaUtils.verify(RsaUtils.SIGNATURE_SHA1_ALGORITHM, myPublicKey, text.getBytes(), sign);
System.out.println("is verify=" + verify);
}
```
+ AesUtil
+ aes加解密方法,支持:`ECB`、`CBC`、`CTR`、`OFB`、`CFB` 5种加密模式,`PKCS5Padding`与`PKCS7Padding`的填充方式。
```
public static void main(String[] args) throws Exception {
// 生成密钥
String pwd = generateSecret(AesUtil.KEY_SIZE_256);
System.out.println("pwd="+pwd);
System.out.println("pwd="+pwd.length());
String text = "abcAAA";
// 加密
String encode5 = encodeBase64(text,pwd);
System.out.println("encode5="+encode5);
// 解密
String decrypt6 =decodeBase64(encode5,pwd);
System.out.println("decrypt6="+decrypt6);
// 向量
byte[] iv = "1234567890123456".getBytes();
// 有向量的加密
String encode7 = encodeBase64(text,pwd,iv,AesUtil.CIPHER_MODE_OFB_PKCS5PADDING);
System.out.println("encode3="+encode7);
// 有向量的解密
String decrypt8 =decodeBase64(encode7,pwd,iv,AesUtil.CIPHER_MODE_OFB_PKCS5PADDING);
System.out.println("decrypt4="+decrypt8);
}
```