Encrypt(加密工具)
字符串,byte[],文件等对象的加密和解密工具集合,包含了多种加密方案。
加密类型 | 摘要 | 相关方法 |
---|---|---|
简单加密 | 换一种编码格式 | Base64Util |
单向加密 | 只能加密,不能解密 | MD5Util、SHAUtil |
对称加密 | 使用相同的秘钥加密和解密 | AESUtil、DESUtil |
非对称加密 | 分公钥和私钥,一个加密,另一个解密 | RSAUtil |
使用方法
Base64util
方法 | 摘要 |
---|---|
String base64EncodeStr(String str) | 编码 |
String base64DecodedStr(String str) | 解码 |
单元测试:
System.out.println("base64");
// base64 字符串加密解密测试
assertEquals("R2NzU2xvb3DkuK3mloc=\n", Base64Util.base64EncodeStr("GcsSloop中文"));
assertEquals("GcsSloop中文", Base64Util.base64DecodedStr("R2NzU2xvb3DkuK3mloc=\n"));
MD5Util
方法 | 摘要 |
---|---|
String md5(String string) | 加密字符串 |
String md5(String string, String slat) | 加密字符串同时加盐 |
String md5(String string, int times) | 多次加密 |
String md5(File file) | 计算文件的md5数值 |
单元测试:
System.out.println("md5");
// MD5 字符串加密测试
assertEquals("", MD5Util.md5(""));
assertEquals("386d3ff3fa6def1ec307428e885e03a1", MD5Util.md5("GcsSloop中文"));
assertEquals("fd01aa74bb73bbdb094bae28a558c6d1", MD5Util.md5("GcsSloop中文", "salt"));
// MD5 多次加密测试
assertEquals("GcsSloop中文", MD5Util.md5("GcsSloop中文", 0));
assertEquals("386d3ff3fa6def1ec307428e885e03a1", MD5Util.md5("GcsSloop中文", 1));
assertEquals("2d9fdd834c5c852fa2f946b670f3731f", MD5Util.md5("GcsSloop中文", 2));
assertEquals("211dd7a16d5a01df756278cea9a38d53", MD5Util.md5("GcsSloop中文", 3));
// MD5 文件md5测试
File file = new File("./Encrypt/Test/demo" +
".flv");
assertEquals("a4e592e6160e0102e7ecc4ab6117b700", MD5Util.md5(file));
SHAUtil
方法 | 摘要 |
---|---|
String sha(String string, String type) | 加密 |
单元测试:
System.out.println("sha");
// des 字符串加密解密测试
String source = "GcsSloop中文";
assertEquals("b9dd1d754ee3ac16dc584b8fd4655ca581a0637eab8ff25128b0a522372e7233",
SHAUtil.sha(source, null));
assertEquals("34d44835ce4cc4d7ecf66428e49273bf02f748d7213be24c767c5f4f",
SHAUtil.sha(source, SHAUtil.SHA224));
assertEquals("b9dd1d754ee3ac16dc584b8fd4655ca581a0637eab8ff25128b0a522372e7233",
SHAUtil.sha(source, SHAUtil.SHA256));
assertEquals("2e3c27201c21b06b01289ebef09c9c36e752ca6a5b6425ca7b2501b4baaed29876954ca710b7e75c80b7b542df28fde6",
SHAUtil.sha(source, SHAUtil.SHA384));
assertEquals("bc3f55fcb03272ee166d7804ccba348ffba05ddce08bf3fab719fa2c97c8dc71993fc9524e21b8fee9491aafc0b309ebca797163bca45ece7c3dd73dae3698ee",
SHAUtil.sha(source, SHAUtil.SHA512));
AESUtil
方法 | 摘要 |
---|---|
String aes(String content, String password, int type) | 加密/解密 |
单元测试:
System.out.println("aes");
// aes 字符串加密解密测试
String source = "GcsSloop中文";
String key = "1234567890123456";
System.out.println("原数据 = " + source);
String aesStr = AESUtil.aes(source, key, Cipher.ENCRYPT_MODE);
System.out.println("加密后 = " + aesStr);
String result = AESUtil.aes(aesStr, key, Cipher.DECRYPT_MODE);
System.out.println("解密后 = " + result);
assertEquals(source, result);
DESUtil
方法 | 摘要 |
---|---|
String des(String content, String password, int type) | 加密/解密 |
单元测试:
System.out.println("des");
// des 字符串加密解密测试
String source = "GcsSloop中文";
String key = "1234567890123456";
System.out.println("原数据 = " + source);
String aesStr = DESUtil.des(source, key, Cipher.ENCRYPT_MODE);
System.out.println("加密后 = " + aesStr);
String result = DESUtil.des(aesStr, key, Cipher.DECRYPT_MODE);
System.out.println("解密后 = " + result);
assertEquals(source, result);
RSAUtil
方法 | 摘要 |
---|---|
Map<String, Object> getKeyPair() | 随机获取密钥(公钥和私钥), 客户端公钥加密,服务器私钥解密 |
String getKey(Map<String, Object> keyMap, boolean isPublicKey) | 获取公钥/私钥(true:获取公钥,false:获取私钥) |
String sign(byte[] data, String privateKey) | 获取数字签名 |
boolean verify(byte[] data, String publicKey, String sign) | 数字签名校验 |
byte[] rsa(byte[] data, String string, int type) | Rsa加密/解密(一般情况下,公钥加密私钥解密) |
单元测试:
System.out.println("rsa");
// des 字符串加密解密测试
byte[] data = "GcsSloop中文".getBytes();
// 密钥与数字签名获取
Map<String, Object> keyMap = RSAUtil.getKeyPair();
String publicKey = RSAUtil.getKey(keyMap, true);
System.out.println("rsa获取公钥: " + publicKey);
String privateKey = RSAUtil.getKey(keyMap, false);
System.out.println("rsa获取私钥: " + privateKey);
// 公钥加密私钥解密
byte[] rsaPublic =
RSAUtil.rsa(data, publicKey, RSAUtil.RSA_PUBLIC_ENCRYPT);
System.out.println("rsa公钥加密: " + new String(rsaPublic));
System.out.println("rsa私钥解密: " + new String(
RSAUtil.rsa(rsaPublic, privateKey, RSAUtil.RSA_PRIVATE_DECRYPT)));
// 私钥加密公钥解密
byte[] rsaPrivate =
RSAUtil.rsa(data, privateKey, RSAUtil.RSA_PRIVATE_ENCRYPT);
System.out.println("rsa私钥加密: " + new String(rsaPrivate));
System.out.println("rsa公钥解密: " + new String(
RSAUtil.rsa(rsaPrivate, publicKey, RSAUtil.RSA_PUBLIC_DECRYPT)));
// 私钥签名及公钥签名校验
String signStr = RSAUtil.sign(rsaPrivate, privateKey);
System.out.println("rsa数字签名生成: " + signStr);
System.out.println("rsa数字签名校验: " + RSAUtil.verify(rsaPrivate, publicKey, signStr));
添加方法
-
在你的项目根
build.gradle
中添加上远程仓库:
allprojects {
repositories {
jcenter()
// 就是下面这一行
maven { url "http://lib.gcssloop.com/repository/gcssloop-central/" }
}
}
- 在需要引用的 module 添加具体依赖。
compile 'com.gcssloop.util:encrypt:1.0.0@aar'
版本信息
-
Android一个把文字转化为路径动画然后展现出来的自定义控件
Android一个把文字转化为路径动画然后展现出来的自定义控件 一个把文字转化为路径动画然后展现出来的自定义控件。效果如上图。 主要的使用流程就是输入文字,然后设置一些动画的属性,还有画笔特效,最后启动就行了。想要自己控制绘画的进度也可以。
-
Android一个简单实用的标签控件,轻松添加最新最热等标签
#LablieView 第一次写的开源控件,大家如果有什么更好的意见可以一起参与完善 如果使用后有什么新的意见可以联系我 邮箱:80945540@qq.com 下载APK 效果图 使用说明 导入 lclablelibrary 到项目中 在 build.gradle 的 dependencies 添加: dependencies { compi
-
Android自定义View辅助工具包,帮助你快速优雅的完成自定义View
ViewSupport 该开源库的主要作用就是简化自定义View过程中的一些流程,让自定义View更简单,更方便,更高效,例如: 继承 CustomView 以自动获取 View 大小以及默认画笔。 使用 CanvasAidUtils 绘制当前坐标系以检查绘制的位置。 使用 MathUtils 方便的进行
-
Android使用AsyncTask实现的多任务多线程下载的Demo,支持断点续
MultiTaskAndThreadDownload 使用AsyncTask实现的多任务多线程下载的Demo,支持断点续传。 Demo演示
-
一句代码设置android手机动态桌面壁纸
VideoWallpaper可以将本地mp4文件设置成手机桌面,手机桌面原来可以如此炫酷。Enjoy it O(_)O build.gralde中引入 compile com.dingmouren.videowallpaper:videowallpaper:1.0.1 需要添加的权限 uses-permission android:name=android.permission.READ_EXTER
-
导航网站源码
-
源代码 在线
-
asp cms
-
免费模块
-
免费网站模板
-
帝国cms模板
-
导航菜单
-
网站源代码下载
-
源码中国
-
后台模板
-
电影网站源码
-
网页制作模板下载
-
帝国模板
-
个人网页制作模板
-
php论坛
-
.net源码
-
网页在线客服代码
-
源码网站
-
html源代码
-
电脑报电子版
-
asp源代码
-
商城系统源码
-
图片代码
-
企业网站管理
-
中国源码
-
简单网页模板
-
免费网
-
素材解析平台
-
网络编程技术
-
个人简历网页模板
-
php代码
-
源码之家
-
电影网站程序
-
网页制作模板
-
织梦cms模板
-
站长源码
-
学校网站模板
-
免费网站模板下载
-
个人网页模板
-
php问答系统下载
-
网页之家
-
多多淘宝客
-
广告联盟源码
-
asp
-
网站首页模板
-
网站右下角广告
-
下载网站源码
-
网站代码
-
css代码
-
模版代码
-
Android一个把文字转化为路径动画然后展现出来的自定义控件
Android一个把文字转化为路径动画然后展现出来的自定义控件 一个把文字转化为路径动画然后展现出来的自定义控件。效果如上图。 主要的使用流程就是输入文字,然后设置一些动画的属性,还有画笔特效,最后启动就行了。想要自己控制绘画的进度也可以。
-
Android一个简单实用的标签控件,轻松添加最新最热等标签
#LablieView 第一次写的开源控件,大家如果有什么更好的意见可以一起参与完善 如果使用后有什么新的意见可以联系我 邮箱:80945540@qq.com 下载APK 效果图 使用说明 导入 lclablelibrary 到项目中 在 build.gradle 的 dependencies 添加: dependencies { compi
-
Android自定义View辅助工具包,帮助你快速优雅的完成自定义View
ViewSupport 该开源库的主要作用就是简化自定义View过程中的一些流程,让自定义View更简单,更方便,更高效,例如: 继承 CustomView 以自动获取 View 大小以及默认画笔。 使用 CanvasAidUtils 绘制当前坐标系以检查绘制的位置。 使用 MathUtils 方便的进行
-
Android使用AsyncTask实现的多任务多线程下载的Demo,支持断点续
MultiTaskAndThreadDownload 使用AsyncTask实现的多任务多线程下载的Demo,支持断点续传。 Demo演示
-
一句代码设置android手机动态桌面壁纸
VideoWallpaper可以将本地mp4文件设置成手机桌面,手机桌面原来可以如此炫酷。Enjoy it O(_)O build.gralde中引入 compile com.dingmouren.videowallpaper:videowallpaper:1.0.1 需要添加的权限 uses-permission android:name=android.permission.READ_EXTER
- 导航网站源码
- 源代码 在线
- asp cms
- 免费模块
- 免费网站模板
- 帝国cms模板
- 导航菜单
- 网站源代码下载
- 源码中国
- 后台模板
- 电影网站源码
- 网页制作模板下载
- 帝国模板
- 个人网页制作模板
- php论坛
- .net源码
- 网页在线客服代码
- 源码网站
- html源代码
- 电脑报电子版
- asp源代码
- 商城系统源码
- 图片代码
- 企业网站管理
- 中国源码
- 简单网页模板
- 免费网
- 素材解析平台
- 网络编程技术
- 个人简历网页模板
- php代码
- 源码之家
- 电影网站程序
- 网页制作模板
- 织梦cms模板
- 站长源码
- 学校网站模板
- 免费网站模板下载
- 个人网页模板
- php问答系统下载
- 网页之家
- 多多淘宝客
- 广告联盟源码
- asp
- 网站首页模板
- 网站右下角广告
- 下载网站源码
- 网站代码
- css代码
- 模版代码