android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。

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 getKeyPair()

随机获取密钥(公钥和私钥), 客户端公钥加密,服务器私钥解密

String getKey(Map 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 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'

版本信息

v1.0.0

添加基本的加密解密工具和辅助工具类。

base

Base64

BaseUtils

CloseUtils

CryptoProvider

TextUtils

encode

Base64Util

oneway

MD5Util

SHAUtil

symmetric

AESUtil

DESUtil

unsymmetric

RSAUtil

备注

本工具库中大部分代码参考自 一个聚合的加解密工具类 但在测试过程中发现部分方法结果不正确,以及部分方法在Android升级过程中进行了修改,所以改进了一部分,特此制作一个工具库,如果发现有什么不准确的地方欢迎提交 Issues。

参考资料

作者简介

f31c32619b978912fc8863390d371e67.png

版权信息

Copyright (c) 2017 GcsSloop

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源应用架构之asterisk

作者:Russell Bryant 翻译:jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说,Asterisk是一个服务器应用,能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spen…

垃圾回收

大部分内容来自于: http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 垃圾回收(garbage collection)机制的基本原则是: 1. 找出程序中不会再被访问到的对象。 2. 回收这部分对象占用的资源(内存&a…

android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

Android5.1 壁纸设置流程浅析Ubuntu14.04 Android5.1 Source Insight3这里只是简单分析一下5.1里是如何设置壁纸的;这个流程和4.4有一些不同。但基本都是找个地方存放壁纸文件,需要的时候读取,设置的时候更新这里只看设置的过程。权当参考。…

如何在asterisk中限制呼叫路数?

在asterisk中,对于呼叫个数是可以通过call-limit进行限制的。限制办法是通过修改asterisk.conf中maxcalls参数,设置允许的最大呼叫数。这里的最大呼叫数是包括所有的呼叫数,出境、入境、分机间等呼叫。 为了分别限制出境/入境/分机间呼叫&…

总结DevExpress10个使用技巧

DevExpress是非常主流的.NET控件,目前全世界和中国都用很多用户使用,不过由于是英文版,初次接触的同学可能会觉得困难,这里就总结DevExpress常见的10个使用技巧。1.TextEditor(barEditItem)取文本 string editValue barEditItem1…

linux组成,Linux学习笔记之Linux组成及初识

1、常见的CPU架构:X86X64M68000ARMUltrasparcPower2、CPU的指令集精简指令集----Power复杂指令集----Intel3、使用汇编语言编写的Operation System 是很难移植在其他系统上系统是支持交叉编译的,但是需告知编译器编译的目标硬件规格是什么编译完成后的系…

WCF系列(1)—— CustomBehavior 入门

由于最近工作一直在做wcf平台上的开发,所以决定先结合自己平时工作中的经验实践写一个WCF的系列,希望能对大家有所帮助。 首先,说到WCF,就不得不提Endpoint这个概念,而Endpoint则由ABC组成,Adress,Binding和…

Asterisk 可加载模块

app_adsiprog.so > (Asterisk ADSI Programming Application) ——用于支持模拟显示服务接口的终端设备,在终端屏幕上操作菜单等。 app_amd.so > (Answering Machine Detection Application) ——用于外呼时终端应答状态检测 app_authenticate.so > (Aut…

android电梯程序设计,课内资源 - 基于Android实现的电梯调度模拟

一、使用说明1.1 项目简介某一楼有20层,操作者可以通过使用5部电梯从起始楼层来到达指定的楼层。本项目通过实现电梯调度,来模拟实现操作系统的调度过程,并且学习Android环境下使用Java的多线程编程方法以及调度算法。1.2 项目要求操作者可以…

默认构造函数的作用(“A”方法没有采用“0”个参数的重载

构造函数主要用来初始化对象。它又分为静态(static)和实例(instance)构造函数两种类别。大家应该都了解如何来写类的构造函数,这里只说下默认构造函数的作用,以及在类中保留默认构造函数的重要性。实际上,我说错了。正确的说法是:…

SourceInsight 设置点滴

SourceInsight是个强大的代码阅读工具, 价格不菲, 目前除了SlickEdit几乎没有可以与之抗衡的, 可能感觉没什么竞争对手的缘故,SI很少更新。SI的设置选项比较多, 这里说几个比较隐蔽的设置: 1. 改变SI的一些…

asp.net 根据当前时间计算是否股票、期货、黄金交易日期

很简单的一个方法: 股票:每周1到周五,上午9:30到11:30 下午13:00 到15:00 期货:每周1到周五,上午9:00到11:30 下午13:30到15:00 黄金:每周1到周五,上午9:00到11:30 下午13:30到15:…

android mac 照片恢复,如何找回Android手机删除的照片?这方法你肯定不知道

安卓手机怎么恢复误删的照片?如何找回Android手机照片?现在大多数人都喜欢用手机拍照存照片,慢慢的,手机中的照片自然而然就会变多,而照片是最占内存的。当你照片达到一定数量,内存快满的时候,连照片都拍不了。所以就…

Asterisk配置文件说明

Asterisk配置文件说明列表 名称 描述 asterisk.conf 主配置文件,通知Asterisk环境目录位置,包含其他所有配置文件所包含的目录,缺省Asterisk会在/etc/asterisk/目录下找到,也可以通过命令参数使用不同的asterisk.conf zaptel.…

apple watch3连android,Apple watch 可以连android手机吗?

在iOS 8.2正式版更新以后,在手机界面上就多出了一个“Apple Watch”的新图标,这是专门针对苹果新产品Apple Watch的应用,主要作用就是连接iPhone和Apple Watch,并未Apple Watch下载应用。打开“Apple Watch”首先进入的是“我的手…

关闭弹出窗体,刷新父页面

parent.location.reload(); window.opener.location.hrefwindow.opener.location.href; 转载于:https://www.cnblogs.com/xbding/archive/2012/07/03/2574660.html

nubia android root权限,获取中兴NX403a (Nubia Z5S Mini Android 4.2)ROOT权限教程,新手必看...

中兴NX403a (Nubia Z5S Mini Android 4.2)如何获取ROOT权限?用什么ROOT工具最简单?请跟着小编一起来看看如何用奇兔刷机对中兴NX403a (Nubia Z5S Mini Android 4.2)进行一键ROOT,小编特别亲手制作了详细的中兴NX403a (Nubia Z5S Mini Android 4.2) ROOT教程图解&a…

A20 编译

android 源码编译分为 2 个部分,一部分是 linux 内核编译,这部分包括 uboot,另一部分是 android 源码编译。所以编译时各自单独编译,编译成功能,最近单独打包成最终烧录的镜像文件。2.1 源码结构说明首先把源码包 A20-…

apache OFBiz的安装

去官网下载OFBiz的代码包。解压这个代码包进入到命令行,输入以下命令 ant build-all 这时候会自动进行安装。这个过程大概有10多分钟。 运行startofbiz脚本。由于我是windows,所以运行startofbiz.bat。在网址输入http://localhost:8080/ecommerce/可以…

android 沉浸栏灰色,Android 沉浸栏实践——踩坑

当前开发环境:Android Studio 2.1.3,compileSdkVersion 24,buildToolsVersion "24.0.2",support:appcompat-v7:24.2.0首先放个图,这就是我要做成的效果,Toolbar 和 Status Bar 一体共用背景图&am…