"Base64编码":描述:Base64是密码学的基石。
特点:可以将任意的二进制数据进行Base64编码。
结果:所有的数据都能被编码为只用65个字符就能标识的文本文件。
65个字符:A~Za~z0~9+=/
对文件进行Base64编码后文件数据约等于编码前数据的四分之三,会大出1/3左右。
Base64编码原理:1,将所有字符转化为ASCII码。
2,将ASCII码转为8位的二进制。
3,将二进制3个归成一组(不足3个后面补0)共24位,在拆分成4组,每组6为。
4,统一在6位而进之前补两个0凑足8位。
5,将补0后的二进制转为十进制。
6,从Base64编码表获取十进制对应的Base64编码。
从iOS7.0开始,苹果就提供了Base64的编码和解码支持。
//给定一个字符串,对该字符串进行Base64编码,然后返回编码后的结果
-(NSString *)base64EncodeString:(NSString *)string
{
//1.先把字符串转换为二进制数据
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
//2.对二进制数据进行base64编码,返回编码后的字符串
return[data base64EncodedStringWithOptions:0];
}
//对base64编码后的字符串进行解码
-(NSString *)base64DecodeString:(NSString *)string
{
//1.将base64编码后的字符串『解码』为二进制数据
NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:0];
//2.把二进制数据转换为字符串返回
return[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
}
c.终端测试命令
$ echo -n A | base64
$ echo -n QQ== |base64 -D
"单向散列函数"特点:
1,加密后密文的长度是定长的。
2,如果明文不一样,那么散列后的结果一定不一样。
3,如果明文一样,那么加密后的密文一定一样。对相同数据加密,加密后密文一样。
4,所有的加密算法是公开的。
5,不可以逆推反算。
经典的加密算法:1,MD5加密。2,SHA1。3,SHA512。
MD5加密算法简单说明:
1,对字符串进行MD5加密可以得到一个32个字符的密文。
2,加密之后不能根据密文逆推出明文。
3,MD5已经被暴力破解。碰撞检测。
MD5安全的加密方式:先乱序再加盐,多次MD5加密。
应用领域:可以做搜索,多个关键字,先对每个关键字进行散列,然后多个关键字进行或运算,如果值一致则搜索结果一致。
版权,对文件进行散列判断该文件是否是正版或原版。
对称加密:加密解密使用相同的密钥。
加密和解密的过程是可逆的。明文加密成密文,密文可以解密成明文。
非对称加密:使用公钥加密,使用私钥解密。公钥是公开的,私钥保密。加密处理安全,但是性能极差。