移动端特点
1.需要和后台进行交互
2.本身可以加密解密找到对应的框架很多
例如kelp404写的安全框架,还要AESCrypt
3.不是独立的,需要和后台统一
后台常见
1.java写的后台
2.php写的后台
由于目前主要用的java 所以这里主要说下java部分的内容
java 使用import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
这是后端的加密解密使用的包
iOS解密:
NSData *dd=[str dataUsingEncoding:NSUTF8StringEncoding];
NSData *data2=[GTMBase64 decodeData:dd];
NSString *aesresult=[SecurityUtil decryptAESData:data2];
NSData *jsonData = [aesresult dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *result = [NSJSONSerialization JSONObjectWithData: jsonData options:0 error:&error];
1.把接收到的字符串进行utf8格式的转换转成nsdata
2.用data在进行base64的解操作
3.进行AES解密 返回一个字符串类型
4.在把这个字符串转换成utf8格式的nsdata
5.用这个nsdata进行json解析,解析成字典形式
之后就是常见的解析和本地UI更新的操作过程了
这里我附上我用上的SecurityUtil工具类
工具类地址
注意事项:
解密是加密的逆过程
如本文中是java先进行aes加密再进行base64加密那么在前端解密的时候正好和它相反,在前端加密的时候是应该和java的顺序保持一致
也就是先尽心aes加密再进行base64解密
备注:
以上观点是实际操作中遇到的问题并进行的总结
总结的注意事项是基本思维模式下进行的,如果你的设计有更复杂的交互那么需要根据具体情况进行具体分析,这里是AES的ECB模式至于其它模式需要使用iv参数量