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…

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

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

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

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

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手机照片?现在大多数人都喜欢用手机拍照存照片,慢慢的,手机中的照片自然而然就会变多,而照片是最占内存的。当你照片达到一定数量,内存快满的时候,连照片都拍不了。所以就…

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…

android实现文本输入,Android实现智能提示的文本输入框AutoCompleteTextView

今天我们要讲一个十分简单的内容,就是一个安卓控件的使用,用法很简单,但是很常用的一个。这里我用两种不同的写法来处理。当然,无论用哪一种写法,效果都是一样的。我们先来看效果图。要实现这种效果十分简单。需要一个…

ibatis的简介与初步搭建应用

一、ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师。 这里讲下自己的使用体会。之前自己学过Hibernate,是看尚学堂的视频教学的,看完以后发现Hibernate体系中的内容真的很多,什么N-N关联、HSQL、缓存管理等等&#xff…

VOIP,PSTN,ISDN

近来在电视、杂志特集等展露头脚的「IP电话」,因其通话费用低廉而有口皆碑。IP电话利用的IP网络在互联网的世界里是众所周知的。互联网被认为基本上是免费的网络。接下来以此开放的技术和构想作为基础而登场的就是IP电话。IP电话与构成 所谓的IP电话 所谓的IP电话就…

svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复

合并步骤:(1)先切换到分支;(2)svn merge trunk . (3)svn sw trunk (4)svn merge --reintegrate branch . svn merge http://59.251.189.152:8989/svn/ron/tru…

计算机组装与维护模拟测试题三答案,春季高考信息技术模拟题3(计算机组装与维修部分含答案)...

36.计算机硬件系统的核心部件是A.主板B.CPUC.内存D.硬盘 37.北桥芯片的功能不包括A.对CPU类型和主频的支持B.对ECC纠错的支持C.对内存类型和最大容量的支持D.对USB接口的支持 38.操作…

wince6下usb摄像头(UVC)使用指南

转自:http://hi.baidu.com/cahbb/blog/item/6d76093498fe0790a61e120e.html 在搭好了wince6的开发环境之后,下一步试验一下wince6下使用摄像头的方法。搜集了不少资料,从中学习了很多有用的东西,在这给记录下来,方便…

使用SqlCommandBuilder

使用命令构造器添加行 View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace PersistAddsBuilder {class Program{static void Main(string[] args){string connStri…

Asterisk权威指南/第二章 Asterisk架构

Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels)。 传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界)。…

x-lite asterisk 成功实现视频通话

首先,在此感谢asterisk协会的各位大牛们,没有他们的帮助,我也不可能在这么短的时间内实现,x-liteasterisk音视频通话。在此将实现的过程记录如下,分享给asterisk的爱好者们。 1. 修改asterisk服务器的sip.conf文件&…

axure 链接html文件,通过WuliHub免费托管原型Axure HTML文件

产品经理常用的工具就是Axure,通过Axure把想法转化成包含交互的原型线框图。在工作中,我们用HTML文件传递不仅会遇到某些浏览器无法打开的问题,而且没有办法及时更新内容。所以,介绍一种简单的并且免费的方式来方便管理HTML原型&a…

Asterisk SIP连通测试(X-Lite eyebeam)

Step1:设置 sip.conf rootUbuntu:/etc/asterisk# vim sip.conf [general] //类似与全局变量 context default srvlookup yes //DNS SRV记录查询 [111] secretaaa //密码&#xf…