加密从是否可解分为(可逆加密,不可逆加密),可逆又分为(非对称加密、对称加密)

 如图:

Java Android 通用可逆加密 可逆加密方式_AES

 

 

 

 

 

可逆加密(可加可解)

RSA (非对称加密)小数据加密 公钥、私钥 不同 (一般公钥加,私钥解,配合base64使用)

AES (对称加密)大数据加密 共用一把钥匙 (加解同一把钥匙)

 

不可逆加密(不可解)

HASH(国内MD5加盐比较主流)

所谓加盐就是目标数据再拼接上盐(仅前端、后台知道)然后MD5

HMAC  (国外较多)其实是HASH + KEY 分别进行HASH (KEY仅前端、后台知道,用于身份认证)。不同于加盐是分别HASH, 而加盐是加到消息体然后HASH

综上所述:不可逆加密主要是签名认证,消息可以以明文发送,外加签名,主要防篡改。不可逆加密,如果发送密文,完全不可知。

 若要保证数据安全可以自己各种加密组合

 

iOS RSA两种加密方式

1.openssll库 (支付宝就是使用这种方式)

优点:能够用.pem 文件加密。

缺点:openssl需要自己合成,依赖静态库,引入文件需要手动修改headerserchpath 和 libraryserchpath .比较麻烦。也可进行长加密,但要修改东西比较多。且不稳定。

 

2.原生

优点:可以随意加解密(不主张太长),只需要导入secrect.framework(xcode8上发现不导入也可以)。稳定

缺点:公钥.der 私钥.p12 

 

公钥私钥:默认是pem格式,iOS原生支持 公钥.der 私钥.p12。JAVA 要用 私钥pkcs8 公私钥都是pem格式 

 

 参考文章:

HASH (MD5(MD全称Message Digest,又称信息摘要算法),SHA1(SHA全称Secure Hash Standard,又称安全哈希标准)… … )加密

(加盐)

http://www.atool.org/hash.php

AES加密(高级加密标准(英语:Advanced Encryption Standard)

http://www.jianshu.com/p/16930be4dddc


RSA(发明者首字母1977。1973年英国科学家一人发现,但被列为绝密)加密

http://www.huangyibiao.com/archives/244

openssl库

https://github.com/openssl/openssl

http://www.qmailer.net/archives/216.html

编译openssl库(或者拷贝支付宝demo里的,比较省事)

http://wenku.baidu.com/link?url=hmzlpuIOTFLziMa38V-xLXmMwSRHXROnAYlf98XAAH8K7JWfiQ8H68i2Atmn6J4vuIEHRHFc5P-RtWCL4xa5AhcOtDh3nXlp8eT6S-CL0Nu

RSAPading模式

https://www.douban.com/note/338531480/

在线生成密钥

http://web.chacuo.net/netrsakeypair