把任意长度的输入通过散列算法变成固定长度的输出,该输出就是散列值
1.1、相关命令
1、32个字符的MD5散列字符串
2、40个字符的SHA1散列字符串
3、64个字符的SHA256散列字符串
4、128个字符的SHA 512散列字符串
5、32个字符的HMAC MD5散列字符串
6、40个字符的HMAC SHA1散列字符串
7、64个字符的HMAC SHA256散列字符串
8、128个字符的HMAC SHA512散列字符串
9、32个字符的MD5散列字符串
散列运算消息认证码;运算使用散列算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出
如下:
1、用户登录,使用md5(pwd+salt)加密获得一个字符串,也叫pwd_md5。
2、客户端有了pwd_md5,如果每次都以这个字符串上传,黑客就不需要你的pwd,直接截取到这个字符串,然后就能模拟你的登录。
3、客户端需要在pwd_md5的基础上,在加入一个随机的字符串的md5,这个随机字符串得是服务器返回 , 有效时间为2分钟 。校验规则md5(pwd_md5+随机串) , 然后md5(pwd_md5+随机串)+账号 上传给服务器。
4、服务器拿到了客户端的账号和md5(pwd_md5+随机串)后,从数据库取出此账号注册时的pwd_md5,也用同样的规则 md5(数据库的pwd_md5+随机串)生成一个字符串, 如果是时间戳的话,校验当前分钟和前一分钟 , 最后本地生成的字符串和客户端上传的字符串进行校验,如果匹配成功,则登陆成功。
HMAC加密
3.1、常见的加密方式
1、DES
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
1)、DES(ECB)加密
DES(ECB)解密
2)、DES(CBC)加密
DES(CBC)解密
2、3DES
DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
3、AES
1)、ECB:电子密码本模式。每一块数据,独立加密。
加密:
查看二进制文件:
解密:
2)、CBC:密码分组链接模式。使用一个密钥和一个初始化向量对数据执行加密
明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同密文加密后会形成不同的密文。
加密:
解密:
4.1、苹果签名认证
1、Mac电脑的公钥+开发者信息发送给苹果服务器(电脑上的私钥相当于p12证书)
2、苹果服务器对公钥+开发者信息进行签名颁发证书返回给苹果电脑
3、Mac电脑通过私钥(p12)对App包进行签名+证书通过Xcode安装到苹果手机
4、苹果手机的公钥在验证证书
苹果双向验证
4.2、苹果权限管理
1、描述文件
描述文件一般包括三样东西:证书、AppID、设备。当我们在真机运行或者打包一个项目的时候,证书用来证明我们程序的安全性和合法性
2、苹果为了解决应用滥用的问题,所有苹果又加了两个限制
1)、苹果后台注册过的设备才可以安装
2)、签名只能针对某一个具体的App
苹果还控制App里面的iCloud/PUSH/后台运行/调试器附加这些权限,所以苹果把这些权限开关统一称为Entitlements(授权文件).并将这个文件放在叫做Provisioning Profile(描述文件)文件中
描述文件是在AppleDevelop网站创建的(在Xcode中填上AppleID它会代办创建),Xcode运行时会打包进入APP内.所以我们使用CSR申请证书时,我们还要申请一个东西!! 就是描述文件!
在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Profile 文件打包进APP里,文件名为embedded.mobileprovision,把 APP 安装到手机上.最后系统进行验证。
双向验证+权限管理
扫描二维码推送至手机访问。
版权声明:本文由MDM苹果签名,IPA签名,苹果企业签名,苹果超级签,ios企业签名,iphoneqm.com发布,如需转载请注明出处。