码迷,mamicode.com
首页 > 其他好文 > 详细

加密之 Base64

时间:2015-10-21 01:40:33      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

  • 是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成只有 65 个字符组成的文本文件
  • a~z,A~Z,0~9,+,/,=
  • Base 64 编码后的结果能够反算,不够安全
  • Base 64 是所有现代加密算法的基础算法

终端命令

# 将 10.jpg 进行 base64 编码,生成 10.txt 文件
$ base64 10.jpg -o 10.txt

# 将 10.txt 解码生成 1.jpg 文件
$ base64 -D 10.txt -o 1.jpg

# 将字符串 Man 进行 base64 编码
$ echo -n "Man" | base64

# 将字符串 TWFu 解码
$ echo -n "TWFu" | base64 -D

代码实现

///  BASE 64 编码
- (NSString *)base64Encode:(NSString *)string {
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

    return [data base64EncodedStringWithOptions:0];
}

///  BASE 64 解码
- (NSString *)base64Decode:(NSString *)string {
    NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:0];

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

保存 & 加载用户信息

///  保存用户信息
- (void)saveUserInfo {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    // iOS 8.0 会直接写入沙盒,无需再使用 `[defaults synchronize];`
    [defaults setObject:self.username forKey:HMUsernameKey];

    NSString *pwd = [self base64Encode:self.pwd];
    [defaults setObject:pwd forKey:HMUserPasswordKey];
}

///  加载用户下信息
- (void)loadUserInfo {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    self.usernameText.text = [defaults stringForKey:HMUsernameKey];
    self.pwdText.text = [self base64Decode:[defaults stringForKey:HMUserPasswordKey]];
}

存在的问题

  1. 使用 Base64 不能直接看到用户密码的明文
  2. 但是 Base64 的算法是公开的,并且算法可逆,安全性并不好

加密之 Base64

标签:

原文地址:http://www.cnblogs.com/jiangshengkai/p/4896557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!