永利官网ylg客户端享用叁个相助类(不断完备中…卡塔尔

博客园潜水了有两年多,现在想分享一个可以说是帮助类吧。

RxTools

1.base64:1>严格的说 base64 并不算是加密,只是一种编码的算法, base64
无论是加密还是解密,都是直接操作二进制数据,系统中提供了关于
base64的加密解密的方法,都是以 base64
开头2>base64可以将任意的二进制数据(例如图片/视频/文件等的二进制数据)编码成字符串,在网络上传输,3>base64编码后的数据由a-z,A-Z,/

Java加密算法有三种:

我们在编写程序的过程中,经常会用到一些方法,我只是把这些方法整合一下,方便使用,目前有md5,sha1,aes加解密,身份证验证,敏感词过滤,文件压缩,图片与base64互相转换,时间戳与时间互相转换,简单的http请求,简单的ftp上传下载,根据起始和结尾字符串截取字符串等等,后续准备把日志记录,支付宝和微信支付进行添加,方便使用,如果你在编程的过程中有比较常用的方法,可以提出来,我们可以一起来完善这个帮助类,如果有不对的地方,恳请指正批评,谢谢大家,喜欢可以分享哦。

永利官网ylg客户端 1

  • =这些符号表示4>base64编码之后数据会变大

1、单向加密算法

nuget:Install-Package ToolHelper -Version 1.2.2

2.加密的要素:算法和秘钥,算法一般是公开的,需要做的是保护秘钥的安全1>对称加密算法:加密解密用的都是相同的秘钥,速度快,适合对大数据加密典型的算法:
DES 3DES AES

2、对错加密算法

github:

永利官网ylg客户端 2

2>非对称加密算法:算法公开,可逆的加密算法用公钥加密,用私钥解密,
(也可以用私钥加密,用公钥解密)速度慢,适合对小数据加密,但是更加安全典型的算法:
RSA

3、非对称加密算法 

 

3>普遍的加密方法:原始数据用对称加密,在使用 非对称加密 将
对称加密的密钥 进行加密,然后在从网络上传输

单向加密算法

只需三步走,我们就可以使用这些方法了。

工欲善其事必先利其器!

4>散列算法:散列算法经常用来给密码进行加密,(防止后台工作人员窃密)不可逆加密:
MD5 / SHA1 / SHA256 / SHA512

单向加密是不可逆的加密算法,加密的密文不能解密,常见的算法有MD5、SHA、HMAC。

  1,nuget 安装 ToolHelper

Android开发过程经常需要用到各式各样的工具类,虽然大部分只需谷歌/百度一下就能找到;

5>MD5
加密后是32字节MD5虽然是不可逆的算法,(但是可以暴力破解,解决的办法是加盐)MD5加盐:原密码+一个复杂的字符串,然后在进行
MD5运算HMAC:原密码+一个字符串,进行 MD5运算,将运算的结果+原密码在进行
MD5加密,(从网络截取数据,并不破解,直接发送给服务器,也可以达到解密的效果,解决办法+时间标识)MD5加时间戳:将一个字符串,进行
MD5加密计算,得到一个 MD5值把原密码和之前生成的 MD5值,再进行
HMAC加密从服务器获取当前时间到分钟的字符串将第二部步产生的HMAC 值+时间
和第一步产生的 MD5值进行HMAC加密

MD5(信息摘要算法)

    永利官网ylg客户端 3

但是有时候急需使用却苦苦搜寻不到,于是整理了自己平常用到的工具类,以便以后的使用。

6>钥匙串将密码保存到本地,不能保存原文,需要进行加密处理,以防沙盒文件漏,通过系统提供的钥匙串功能,可以在本地保存密码,系统使用
AES 的方式对密码进行加密使用SSKeychain 框架进行钥匙串操作

无论多长数据最后都编码成128位数据,同样数据一直一致。

 

如何使用它

7>ECB 和 CBC 只是加密方式并不是加密算法,传统的 AES 和 DES
都支持这两种方式ECB: 电子密码本
将要加密的数据分块,分别加密,数据块的加密过程相互独立,互不影响.例如,相同的数据块加密结果是相同的CBC:
密码链条
将要加密的数据分块,分别加密,后加密的数据块依赖于前面的加密结果.例如,相同的数据块加密结果是不同的

用途:可用做文件校验、密码加密、散列数据。

 

Step 1.先在 build.gradle(Project:XXXX) 的 repositories 添加::

8>DES/3DES/AESDES:数据加密标准(用的很少因为强度不够)3DES:使用3个密钥,对相同的数据执行3次加密,强度增强AES:高级加密标准(目前美国国家安全局,苹果钥匙串使用的都是
AES)

代码:

  2,添加命名空间

allprojects {

9>RSA非对称加密算法强度复杂,加密依赖于算法与密钥加密解密速度慢

永利官网ylg客户端 4永利官网ylg客户端 5

  永利官网ylg客户端 6

repositories {

public static String getMD5Str(String s) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] bytes = md.digest(s.getBytes("utf-8"));
        return toHex(bytes);
    }
    catch (Exception e) {
        throw new RuntimeException(e);
    }
}
public static String toHex(byte[] bytes) {
    final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
    StringBuilder ret = new StringBuilder(bytes.length * 2);
    for (int i=0; i<bytes.length; i++) {
        ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
        ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
    }
    return ret.toString();
}

public static void main(String[] args) {
    System.out.println(getMD5Str("123456")); //输出E10ADC3949BA59ABBE56E057F20F883E
}

  3,开始使用

View Code

下面介绍这个帮助类目前有的的一些方法:

maven { url “” }

注意:

MD5Helper(对字符串进行MD5):

}

1、算出的字符串长度32,每个字符都是一个十六进制的数,一个十六进制的数转换成二进制是四位,也就是32长度的字符串换算成位32
* 4 = 128位。

Console.WriteLine($"123456:{MD5Helper.MD5("123456")}");

}

2、算出的一定是32个字符的,16个是截取了结果一部分的。

永利官网ylg客户端 7

Step 2. 然后在 build.gradle(Module:app) 的 dependencies 添加:

3、MD5常配合base64编码用,但base64编码不是一种加密算法,只是一种数据编码。

 

dependencies {

SHA(安全散列算法)

SHA1Helper(对字符串进行SHA1):

compile ‘com.github.vondear:RxTools:v1.6.0’

安全性高于MD5,加密结果都是160位数据,用途与MD5类似。

Console.WriteLine($"123456:{SHA1Helper.SHA1("123456")}");

}

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,后四者有时并称为SHA-2。

永利官网ylg客户端 8

使用方法:

HMAC(散列消息鉴别码)

 

在Application中初始化 RxUtils.init(this);

用途:常用于对API参数进行请求校验。

IllegalWordHelper(敏感非法词汇过滤):

自定义控件介绍

对称加密算法

var info = "针孔摄象,你懂的";
Console.WriteLine($"{info}:{IllegalWordHelper.Filter(info)}");

RxToast                    : Toast的封装

同一个密钥可加密,也可以解密,常见算法DES、AES、PBE。

永利官网ylg客户端 9

RxTitle                    : 自定义标题控件

DES(数据加密标准)

当然你也可以自己定义需要过滤的词汇,以竖线 ‘|’ 分割:

RxTextAutoZoom              : 文字根据布局大小自动缩放效果

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

 var info = "针孔摄象,你懂的";
 var selfFilter = "针孔|你懂的|怎么说";
 Console.WriteLine($"{info}:{IllegalWordHelper.Filter(info, selfFilter)}");

RxRunTextView              : TextView实现跑马灯效果

ylg娱乐官网,AES(DES的升级版)

永利官网ylg客户端 10

RxTextviewVertical          : 单行文字上下滚动

PBE(基于口令加密)

 

RxTextViewVerticalMore      : 多行文字上下滚动

非对称加密算法

 

RxAutoImageView            : ImageView实现自动左右移动效果

需要两个密钥。公钥加密数据,私钥解密数据;私钥用来签名,公钥验证签名;常见算法RSA、DH。 

AESHelper(aes加密、解密):

RxBarCode                  : 条形码控件

加密:

RxQRCode                    : 二维码控件

Console.WriteLine($"123456:{AESHelper.Encrypt("123456")}");

RxNetSpeedView              : 显示当前网速控件

永利官网ylg客户端 11

RxToolTip                  : 实现popupWindow效果

解密:

RxRoundProgress            : 实现弧形进度条

Console.WriteLine($"ApZg+nlV6IEE+Cly2o9inQ==:{AESHelper.Decrypt("ApZg+nlV6IEE+Cly2o9inQ==")}");

RxProgressBar              : 自定义进度条

永利官网ylg客户端 12

RxShoppingView              : 商品数量加减控件

当然为了安全起见,你可以自定义自己的 16位或者32位key  和16位的iv:

RxSeatMovie                : 电影院选座控件

自定义加密:

RxSeatAirplane              : 飞机票选座控件

  var selfKey = "abcdefghijklmnop";
  var selfIV = new byte[] { 0x7f, 0x0a, 0x2d, 0x96, 0x94, 0xa5, 0xc2, 0x7b, 0xaa, 0x89, 0x00, 0x8b, 0xf3, 0xab, 0x15, 0xfd, };
  Console.WriteLine($"123456:{AESHelper.Encrypt("123456", selfKey, selfIV)}");

RxRulerWheelView            : 刻度横向滚动控件

永利官网ylg客户端 13

RxCaptcha                  : 验证码控件

自定义解密:

Dialog的封装(RxDialog)

   var selfKey = "abcdefghijklmnop";
   var selfIV = new byte[] { 0x7f, 0x0a, 0x2d, 0x96, 0x94, 0xa5, 0xc2, 0x7b, 0xaa, 0x89, 0x00, 0x8b, 0xf3, 0xab, 0x15, 0xfd, };
   Console.WriteLine($"Vju1+MLzN5VUlNua+HhMkA==:{AESHelper.Decrypt("Vju1+MLzN5VUlNua+HhMkA==", selfKey, selfIV)}");

skipTools                  : 隐藏头部导航栏状态栏

永利官网ylg客户端 14

setFullScreen              : 文字根据布局大小自动缩放效果

 

setFullScreenWidth          : 设置宽度match_parent

CheckHelper(对手机号、身份证等进行简单的验证):

setFullScreenHeight        : 设置高度为match_parent

Console.WriteLine($"123456,{CheckHelper.IsIDNumber("123456")}");
Console.WriteLine($"123456,{CheckHelper.IsMobile("123456")}");

setOnWhole                  : 设置成全局Dialog

永利官网ylg客户端 15

Activity的封装

 

ActivityBase                : 封装了FragmentActivity与Context成员参数

 StringHelper(根据起始和结尾的字符串来截取字符串):

ActivityCodeTool            : 封装了生成二维码与条形码的Activity

Console.WriteLine($"针孔摄像头,{StringHelper.Substring("针孔摄像头", "针孔", "头")}");

ActivityScanerCode          : 封装了扫描二维码与条形码的Activity

永利官网ylg客户端 16

ActivityWebView            :
封装了可播放视频、获取网页标题并可根据内容自动适应大小WebView的Activity

 

Demo介绍

TimeHelper(13位时间戳和时间的相互转换):

永利官网ylg客户端,RxPhotoUtils操作UCrop裁剪图片

Console.WriteLine($"时间戳:{TimeHelper.GetTimestamp()}");
Console.WriteLine($"时间:{TimeHelper.TimestampToDate("1533570979682")}");

永利官网ylg客户端 17

二维码与条形码的扫描与生成

 

ImageHelper(图片转base64字符串,字节数组,base64字符串转图片):

常用的Dialog展示

图片转base64:

 var path = @"C:ProjectstudyStudyToolHelperTestNugethuge.jpg";
 Console.WriteLine($"base64 string:{ImageHelper.ImageToBase64(path)}");

永利官网ylg客户端 18

其他功能展示

base64转图片:

 var path = @"C:ProjectstudyStudyToolHelperToolHelperTestNugethuge.jpg";
 ImageHelper.Base64ToImage(ImageHelper.ImageToBase64(path), "e:/images/hugehello.jpg");

永利官网ylg客户端 19

功能模块介绍

 

常用功能 -> RxUtils.java

参考:

hideKeyboard                : 点击隐藏软键盘

countDown                  : 倒计时(获取验证码倒计时)

showToast                  : 封装了Toast的方法

fixListViewHeight          :
手动计算出listView的高度,但是不再具有滚动效果

createQRImage              : 生成二维码

drawLinecode                : 生成条形码

Md5                        : 生成MD5加密32位字符串

图像操作相关 -> RxImageUtils.java

单位转换

dp2px                      : dp转px

dip2px                      : dip转px

px2dp                      : px转dp

px2dip                      : px转dip

sp2px                      : sp转px

px2sp                      : px转sp

图片处理相关

bitmap2Bytes                : bitmap转byteArr

bytes2Bitmap                : byteArr转bitmap

drawable2Bitmap            : drawable转bitmap

bitmap2Drawable            : bitmap转drawable

drawable2Bytes              : drawable转byteArr

bytes2Drawable              : byteArr转drawable

calculateInSampleSize      : 计算采样大小

getBitmap                  : 从文件/InputStream流/resId中获取bitmap

scale                      : 缩放图片

clip                        : 裁剪图片

skew                        : 倾斜图片

rotate                      : 旋转图片

getRotateDegree            : 获取图片旋转角度

toRound                    : 转为圆形图片

toRoundCorner              : 转为圆角图片

fastBlur                    : 快速模糊

renderScriptBlur            : renderScript模糊图片(API大于17)

stackBlur                  : stack模糊图片

addFrame                    : 添加颜色边框

addReflection              : 添加倒影

addTextWatermark            : 添加文字水印

addImageWatermark          : 添加图片水印

toAlpha                    : 转为alpha位图

toGray                      : 转为灰度图片

save                        : 保存图片

isImage                    : 根据文件名判断文件是否为图片

getImageType                : 获取图片类型

图片压缩有关

compressByScale            : 按缩放压缩

compressByQuality          : 按质量压缩

compressBySampleSize        : 按采样大小压缩

GetLocalOrNetBitmap        : 得到本地或者网络上的bitmap

getColorByInt              : 将16进制的颜色转化成10进制

FilpAnimation              : 界面翻转动画

数据处理相关 -> RxDataUtils.java

数据的判断

isNullString                :判断字符串是否为空 为空即true

isEmpty                    : 判断对象是否为空 为空即true

isInteger                  :判断字符串是否是整数

isDouble                    :判断字符串是否是浮点数

isNumber                    :判断字符串是否是数字

getAstro                    :根据日期判断星座

数据的转换

stringToInt                :字符串转换成整数 ,转换失败将会 return 0;

stringToLong                :字符串转换成long ,转换失败将会 return 0;

stringToDouble              :字符串转换成double ,转换失败将会 return 0;

simpleDateFormat            :将date转换成format格式的日期

Date2Timestamp              : 将日期字符串 按照 指定的格式 转换成 DATE

getDate                    :时间戳  转换成 指定格式的日期

string2Timestamp            :将 yyyy年MM月dd日 转换成 时间戳

getCurrentDateTime          :获取当前日期时间 / 得到今天的日期

getYestoryDate              :得到昨天的日期

formatTime                  :视频时间 转换成 “mm:ss”

发表评论

电子邮件地址不会被公开。 必填项已用*标注