加密的Demo,欢迎下载html
java端的加密解密,读者能够看我同事的这篇文章http://www.jianshu.com/p/98569e81cc0bjava
最近作了一个移动项目,是有服务器和客户端类型的项目,客户端是要登陆才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android、iOS),在处理iOS的数据加密的时候遇到了一些问题。起初采起的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采起RSA方式加密。RSA加密时须要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据。(iOS端公钥加密私钥解密、java端公钥加密私钥解密,java端私钥加密公钥解密都容易作到,iOS不能私钥加密公钥解密,只能用于验签)。ios
iOS不管使用系统自带的sdk函数,用mac产生的或者使用java的jdk产生的公钥和私钥,进行加密解密本身均可以使用。不过ios加密,java解密,或者反过来就不能用了。要么是没法建立报告个-9809或-50的错误,要么解出来是乱码。ios系统函数种只有用公钥加密,私钥解密的方式。而公钥加密每次结果都不一样。git
openssl
(openssl是生成各类秘钥的工具,mac已经嵌入genrsa -out rsa_private_key.pem 1024
(生成私钥,java端使用的)rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout
(生成公钥)pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
(私钥转格式,在ios端使用私钥解密时用这个私钥)一、引入头文件 #import "DES3Util.h" 二、加密时调用类方法 +(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key; 三、解密时调用类方法 +(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key;
一、引入头文件 #import "RSAUtil.h" 二、公钥加密时调用类方法: + (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey; + (NSData *)encryptData:(NSData *)data publicKey:(NSString *)pubKey; 三、私钥解密时调用类方法 + (NSString *)decryptString:(NSString *)str privateKey:(NSString *)privKey; + (NSData *)decryptData:(NSData *)data privateKey:(NSString *)privKey;
一、引入头文件 #import "MD5Util" 二、加密时调用方法:- (NSString *)md5:(NSString *)str;
一、引入头文件 #import "AES.h" 二、加密时调用方法 + (NSString *)encrypt:(NSString *)message password:(NSString *)password; 二、解密时调用的方法 + (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;
有关RSA、MD五、AES加密的原理介绍github