ssh :secure shell
加密:
1. 对称加密 (加密密钥与解密密钥相同)
des 、aes
2. 非对称加密(加密密钥与解密密钥不同)
RSA :公钥、私钥
数字摘要:
md5 \sha1
密码学
Base64编码,将任意二进制
数据进行编码,有65中字符组成的文本(0-9、a-z、A-Z、+/=)
- 6个二进制位为单位,最后用
=
来补齐 - 所有数据都可以编码、图片也可以
base64 123.txt -o abc.txt
base64 abc.txt -o 234.txt -D
- 给字符串加密
echo hello| base64
echo YW5nbGltdUAxNjMuY29tCg==|base64 -D
/** 字符串,进行base64编码 */
- (NSString *)base64Encode:(NSString *)string
{
// 1.将字符串转成 二进制
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
// 2.返回base64编码
return [data base64EncodedStringWithOptions:0];
}
/** 给我一个base64编码,解码 */
- (NSString *)base64Decode:(NSString *)string
{
// 1.将base64编码后的字符串,转换成 二进制
NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:0];
// 2.返回字符串
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
----------------------------------------------
NSLog(@"%@", [self base64Encode:@"haha"]);
// aGFoYQ==
NSLog(@"%@", [self base64Decode:@"aGFoYQ=="]);
// haha
位运算:与、或、非、异或(简单的加密)
- 很多数据就是简单的异或!
密码学
上世纪70年代现代密码学——非对称加密算法 RSA
(网络)
- 私钥加密,公钥解密
- 公钥加密,私钥解密
对称加密(本地)
- 用什么来加密的,就用什么解密
- DES、3DES、AES(高级密码标准,美国安全局使用)
- 明文→密钥→密文
- 密文→密钥→明文
哈希(散列)函数
- MD5:32个字符,不管原始数据有多大,不可逆
- 对相同数据加密一样、不同数据加密结果不一样
- 信息摘要,只是信息的一部分(信息指纹!)
- 这个指纹是张三的,不可能拿这个指纹把张三变出来
- 可以反查询MD5解密网站,直接MD5加密就不安全了
- 加盐,所有地方都有保持一致,pc\android\ios,还是有安全问题
- HMAC加密:给定密钥对明文进行加密,做2次散列!得到结果也是32位(去反查询基本查不到)
// 直接md5太简单
// pwd = pwd.md5String;
// pwd = [pwd stringByAppendingString:salt].md5String;
pwd = [pwd hmacSHA1StringWithKey:@"helen"];
// 登陆
[self sendUserId:uid withPwd:pwd];
- 实际开发中,密钥来自服务器!一个账号!对应一个密钥
- 泄露只影响一个用户的
- 指纹人脸是手机的主人,密码是账号的主人,手机绑定了账号所以能支费用
哈希(散列)函数应用
- 文件识别、加密
- 文件名、后缀,本身和文件没有关系,只是告诉操作系统的,改了名字它hash值还是不变,网站识别防止重复上传
- 可以压缩文件,文件的二进制发生变化,hash值也改变
- 拆词搜索,哈希求和,顺序不同结果相同
网友评论