# 將 10.jpg 進行 base64 編碼,生成 10.txt 文件 $ base64 10.jpg -o 10.txt # 將 10.txt 解碼生成 10.jpg 文件 $ base64 10.txt -o 10.jpg -D
# 將字符串 Man 進行 base64 編碼 $ echo -n "Man" | base64 # 將字符串 TWFu 解碼 $ echo -n "TWFu" | base64 -D
發送隱私信息時需要加密
提示 :服務器上保存的私密信息是機密之後的數據
保存隱私信息時也需要加密
讀取保存的隱私信息時需要解密
網絡應用程序的數據安全提示 :base64編碼的本質是編碼不是加密.此處只是一個模擬加密
base64編碼 ===>模擬加密
/// base64編碼---加密 : 傳入需要"加密"的字符串,返回"加密"之後的字符串 - (NSString *)base64Encode:(NSString *)str { // 1.將需要加密的數據轉成二進制,因為Base64的編碼和解碼都是針對二進制的 NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; // 2.把二進制數據編碼之後,直接轉成字符串 NSString *encodeStr = [data base64EncodedStringWithOptions:0]; // 3.返回結果 return encodeStr; }base64解碼 ===>模擬解密
/// base64解碼---解密 - (NSString *)base64Decode:(NSString *)encodeStr { if (encodeStr.length == 0) { return nil; } // 1.把編碼之後的字符串解碼成二進制 NSData *data = [[NSData alloc] initWithBase64EncodedString:encodeStr options:0]; // 2.把解碼之後的二進制轉換成字符串 NSString *decodeStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // 3. 返回結果 return decodeStr; }發送用戶信息時先"加密".
NSString *psd = self.psdTextField.text; // 密碼加密之後再發送出去 psd = [self base64Encode:psd];保存用戶信息之前"加密"處理.
/// 保存"加密"後的用戶信息到偏好設置 - (void)saveUserInfo { [[NSUserDefaults standardUserDefaults] setObject:self.userNameTextField.text forKey:userNameKey]; // 保存之前先加密 NSString *userName = [self base64Encode:self.psdTextField.text]; [[NSUserDefaults standardUserDefaults] setObject:userName forKey:psdKey]; }讀取本地"加密"的用戶信息時需要"解密".
/// 讀取保存到本地的"加密"的用戶信息 - (void)readUserInfo { self.userNameTextField.text = [[NSUserDefaults standardUserDefaults] objectForKey:userNameKey]; // 讀取時先解密 NSString *psd = [self base64Decode:[[NSUserDefaults standardUserDefaults] objectForKey:psdKey]]; self.psdTextField.text = psd; }
# 得到文件的MD5值 $ md5 文件名 # 得到字符串的MD5值 md5 -s "string"
psd = [psd md5String];Base64與MD5對比
// 鹽 NSString *salt = @"123zxcASD!@#"; psd = [[psd stringByAppendingString:salt] md5String];
// 鹽 NSString *salt = @"123zxcASD!@#"; psd = [psd hmacMD5StringWithKey:salt];
/// 所有賬戶 + (NSArray *)allAccounts; /// 獲取所有賬戶信息 + (NSArray *)accountsForService:(NSString *)serviceName; /// 獲取賬號密碼 + (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account; /// 刪除賬號密碼 + (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account; /// 將賬號密碼保存在鑰匙串 + (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;
/* 參數1 : 要保存到鑰匙串的密碼 參數2 : 保存哪個應用的密碼 參數3 : 保存哪個賬號的密碼 */ [SSKeychain setPassword:self.psdTextField.text forService:[NSBundle mainBundle].bundleIdentifier account:self.userNameTextField.text];