1.密码学:
RSA—公钥加密,私钥解密,私钥加密,公钥解密。因式分解,大概50年。
哈希函数(散例函数)——
MD5 SHA1 SHA256 /512 (MD5得到的结果是定长的,32个字符) 不可逆的。
1.密码,
2.正版 盗版的md5加密
3.加”盐“ 基本解决了 库里搜索。 盐是固定的。盐不能是固定的。
盐随机获取。早期使用。
4.HMAC :
一个密钥,对铭文进行密钥的拼接,并且做“两次散例”—》得到32位的结果。
(通过钥匙串获取key 如果没有就请求key.)
密码时效性,密码加密方式,(明文+key)hmac
客户端:
userId = hank
Password = password
服务器:
5.openssl加密算法库,
6.keychain aes加密算法。
7.对称加密算法:
DES 3DES AES—(美国国家安全局使用。)
-加密和解密都是使用同一个“密钥”
-传统加密算法:明文—加密—密文
密文—解密—明文
经典的算法:DES 数据加密标准,用的比较少。因为强度不够。
3DES 加密算法,使用3个密钥 对相同的数据执行三次加密,强度增强。密钥的管理很重要。
AES 高级加密标准,目前国家安全局,使用AES加密。苹果的钥匙串访问就是使用AES加密。
两种加密方式:ECB(每一块独立加密,)
CBC (CBC的加密,拆分成对第二块的加密会依赖前面一块的加密。密码块的链条 密钥和一个初始化向量 对数据 执行加密如果一个数据发生改变,后面所有的数据都会被破坏CBC更安全。)
电子代码本,
将一个大的数据块拆分为若干个小的数据块,再依次加密。拆分多块,然后独立加密。
CBC加密方式:也是将数据拆分成若干小的数据块,
解密 分成5大块,然后依次解密。
8.非对称加密算法:
RSA:现代加密算法:
公钥、私钥
公钥加密 私钥解密
私钥加密 公钥解密
支付宝的RSA p12
RSA的私钥
7指纹识别 ios8.0指纹识别。
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, 指纹无法识别
LAErrorUserCancel = kLAErrorUserCancel, 用户点击取消
LAErrorUserFallback = kLAErrorUserFallback,用户点击了 输入密码
/// Authentication was canceled by system (e.g. another application went to foreground).
LAErrorSystemCancel = kLAErrorSystemCancel, 系统取消 比如激活了其他应用,退到后台,自己切换了应用。
/// Authentication could not start, because passcode is not set on the device.
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, 因为设备上没有设置密码。
/// Authentication could not start, because Touch ID is not available on the device.
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, 没有touchID
/// Authentication could not start, because Touch ID has no enrolled fingers.
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, 没有输入指纹
/// Authentication was not successful, because there were too many failed Touch ID attempts and
/// Touch ID is now locked. Passcode is required to unlock Touch ID, e.g. evaluating
/// LAPolicyDeviceOwnerAuthenticationWithBiometrics will ask for passcode as a prerequisite.
LAErrorTouchIDLockout NS_ENUM_AVAILABLE(10_11, 9_0) __WATCHOS_AVAILABLE(3.0) __TVOS_AVAILABLE(10.0) = kLAErrorTouchIDLockout, 被锁,输入密码错误过多。
/// Authentication was canceled by application (e.g. invalidate was called while
/// authentication was in progress).
LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel, appcancel::短信电话 打断
/// LAContext passed to this call has been previously invalidated.
LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext
} NS_ENUM_AVAILABLE(10_10, 8_0) __WATCHOS_AVAILABLE(3.0)
9:数字签名::RSA重要的数字签名。
客户端给服务器 发送(支付)数字准确性。保证数据的完整性。数据报文,哈希 对称 非对称,RSA非对称的算法,数字签名。
RSA用的最多,保证完整性,对小数据进行加密,数据报文,对数据报文—加密算法,哈希算法,不可逆的,(32位的字符)
RSA加密算法然后再加密——RSA的加密之后的密文,这密文就是加密之后的密文 就是签名,数字签名。
服务器 ——私钥解密,—得到32位字符。 确认数据没有被修改
pem
ios中不能直接使用PEM的格式的证书。
openssl默认生成的是pen
ios开发是DER 是一个二进制。
openssl req
生成私钥和共钥 ::
1. 生成私钥:genrsa -out rsa_private_key.pem
2. 公钥: rsa -in rsa_private_key.pem -out public.pem -pubout
3.生成申请证书 req -new -key private_key.pem -out cert.csr
4.自签证 x509 -req -in cert.csr -out rsa_public_key.der -outform der -signkey private_key.pem -days 3650
1(x509 -req -days 3650 -in cert.csr -signkey private_key.pem -out reacert.crt
2 x509 -outform der -in reacert.crt -out rsa_public_key.der)
pkcs12 -export -out p.p12 -inkey private_key.pem -in reacert.crt