为防止网络传输过程中重要数据被篡改,客户端与服务端都会对发出的数据签名或加密,对收到的数据验签或解密。签名可能用到MD5,SHA1,加解密可能用到3DES,AES,RSA等。加密数据传输一般以字符串形式,通常会用到BASE64,HEX转换工具。
一、JAVA方式
笔者搜集了上面提到的主要几种加解密方式及转换的实现,在此分享出来供大家参考,欢迎提意见,我会进一步完善~
二、JNI封装算法
以上方式为JAVA实现,为了增加代码反编译的难度,大家还可以尝试将算法及KEY封装在JNI中,可参考:
GitHub地址:https://github.com/panxw/android-jni-project.git
三、使用说明
Test.java:总测试程序。
AESHelper.java:AES加解密工具。
DESedeHelper.java:3DES加解密工具。
RSAHelper.java:RSA加解密工具。
SignatureHelper.java:MD5, SHA-1签名工具。
Base64.java及Hex.java:字符串与字节码转换工具。
Base64如报错,请用security中的jar文件换掉JRE/lib/security中的jar包
相关推荐:Android EventBus源码解析 带你深入理解EventBus 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:【张鸿洋的博客】上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源码,相信能
描述 (Description) 此函数使用system crypt()函数加密字符串EXPR。 SALT的值用于从多种变体之一中选择加密版本。 您无法解密以这种方式加密的字符串。 它通常以一种方式使用,首先加密字符串,然后加密密码以与加密字符串进行比较。 如果您在此表单中使用它,请考虑将加密密码作为SALT提供。 语法 (Syntax) 以下是此函数的简单语法 - crypt EXPR,SALT
crypt(将密码或数据编码) 相关函数 getpass 表头文件 #define _XOPEN_SOURCE #include<unistd.h> 定义函数 char * crypt (const char *key,const char * salt); 函数说明 crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串
此函数用于加密字符串。 语法 (Syntax) crypt(source,salt) 参数 (Parameters) source - 这是需要加密的源字符串。 salt - 这是需要用于加密过程的字符。 返回值 (Return Value) 此函数返回加密的字符串。 例子 (Example) /* Main program */ options arexx_bifs say crypt(
crypt 将密码或数据编码 相关函数 getpass 表头文件 #define _XOPEN_SOURCE #include<unistd.h> 定义函数 char *crypt(const char *key, const char *salt); 函数说明 crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串长
Crypt 用于从 etcd 或者 consul 中存储和获取加密配置。
Crypt-LE This module provides the functionality necessary to use Let's Encrypt API and generate free SSL certificates for your domains. It can also be used to generate private RSA/ECC keys and Certifi