加密之 Base64

  • 是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成只有 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 的算法是公开的,并且算法可逆,安全性并不好
时间: 2024-12-19 17:30:06

加密之 Base64的相关文章

MD5加密,Base64加密/解密,AES加密/解密

1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示. 2.使用前的配置及注意事项: (1) 在build phases中的GTMBase64.m需要设置 -fno-objc-arc (2) 在#import "NSString+Base64.m”文件中导入   #import <Foundation/Foundation.h> (3)在#import "GTMBase64.m”文件中添加         

java工具类 文件zip压缩 base64 加密,base64解密 zip解压

package com.cfam.utils; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;

步步为营-33-Md5(32)加密与Base64加密

说明: 1:直接贴码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Wind

Java基础加密之BASE64加解密

BASE64加解密,加密与解密实际是指编码(encode)和解码(decode)的过程,其变换是非常简单的,仅仅能够避免信息被直接识别. Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式. Base64使用A--Z,a--z,0--9,+,/ 这64个字符. Base64是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的ASCII字符序列 Base64编码表 Value Encoding  Value Encoding  Value Encodin

MD5加密及BASE64编码

MD5即Message-Digest Algorithm 5(信息-摘要算法5): 方法一: 添加jar包:${SPRING_HOME}/lib/jakarta-commons/commons-codec.jar import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { // 返回md5加密后的字符串 public static String md5(String message) { String md

python 加密解密(base64, AES)

1. 使用base64 s1 = base64.encodestring('hello world') s2 = base64.decodestring(s1) print s1, s2 结果 aGVsbG8gd29ybGQ= hello world Base64编码,64指A-Z.a-z.0-9.+和/这64个字符,还有"="号不属于编码字符,而是填充字符.为什么发明这么个编码呢,这个编码的原理很简单,"破解"也很容易,原因是电子邮件刚出来的时候,只传递英文字符,

Java实现 Base64、MD5、MAC、HMAC加密(转)

开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... package codec; import java.security.MessageDigest; import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.c

Jmeter编写Base64加密函数

方法一: 使用Beanshell Sampler.BSF Sampler等实现,现已Base64加密为例,脚本如下: import sun.misc.BASE64Decoder; String res = new sun.misc.BASE64Encoder().encode("${session}".getBytes()); vars.put("BASE64",res); ${session}:要加密的字符串参数 BASE64:加密后的字符串保存在${BASE64

base64加密原理

以加密字符串"HkMayfly"为例子 1.转换字符 将待加密字符串的每个字符转换为对应ASCII码的二进制形式并拓展为8位. 2.划分数据 每3个字符为一组,共24位,每6位划分为一组,不足6位在末尾添0,并转换为对应的十进制.不足3个字符,最后取字符时,用'='代替 3.base64加密 将base64的值对照索引表取得字符,得到加密结果. 数值 字符   数值 字符   数值 字符   数值 字符 0 A 16 Q 32 g 48 w 1 B 17 R 33 h 49 x 2 C