几种常用的加密方式简单介绍

本文介绍了Base64、MD5、钥匙串、对称加密及RSA等加密方式的特点及应用场景,对比了不同加密算法的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1 Base64加密方式(可逆)

Base64中的可打印字符包括字母A-Z/a-z/数组0-9/ 加号’+’斜杠’/’ 这样共有62个字符

Base64 ios7之后加入系统库


android  中 的几种模式 ,在需要与服务端或者交互式要沟通好需要处理的字符。

   •    CRLF 这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LF
    •    DEFAULT 这个参数是默认,使用默认的方法来加密
    •    NO_PADDING 这个参数是略去加密字符串最后的”=”
    •    NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)
    •    URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/

因为各个系统间会有特殊字符处理不同的情况。有个简单的方式直接用 NO_WRAP 模式加密后,进行utf-8处理。如下:

 public static String getBase64(String str) {  
        String result = "";  
        if( str != null) {
             try {  
                result = new String(Base64.encode(str.getBytes("utf-8"), Base64.NO_WRAP),"utf-8");
             } catch (UnsupportedEncodingException e) {  
                 e.printStackTrace();  
             }  
        }
        return result;  
    }  

    // 解密  
    public static String getFromBase64(String str) {  
        String result = "";  
        if (str != null) {  
            try {
                result = new String(Base64.decode(str, Base64.NO_WRAP), "utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }  
        }  
        return result;  
    }  
 

 

2 MD5加密

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护

是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

根据输出值,不能得到原始的明文,即其过程不可逆

 

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

 

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

 

MD5加盐

 

3 钥匙串加密方式

 

iCloud钥匙串,苹果给我们提供的密码保存的解决方案,iOS7之后有的

 

存沙盒:

1、如果手机越狱,密码容易被窃取。

2、当软件更新时,沙盒里的内容是不被删除的。但是,如果将软件卸载后重装,沙盒里的数据就没有了。

3、每个APP的沙盒是相对独立的,密码无法共用。

 

存钥匙串里:

1、苹果提供的安全方案,rsa加密,相对安全。

2、无论软件更新或删除,密码都存在,都可以自动登录。

3、同一公司的APP密码是可以共用的。

 

4 对称加密算法

 

优点:算法公开、计算量小、加密速度快、加密效率高、可逆

缺点:双方使用相同钥匙,安全性得不到保证

现状:对称加密的速度比公钥加密快很多,在很多场合都需要对称加密,

算法: 在对称加密算法中常用的算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、SKIPJACK、AES等。不同算法的实现机制不同,可参考对应算法的详细资料

相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准

 

nECB :电子代码本,就是说每个块都是独立加密的

nCBC :密码块链,使用一个密钥和一个初始化向量 (IV)对数据执行加密转换

 

ECB和CBC区别:CBC更加复杂更加安全,里面加入了8位的向量(8个0的话结果等于ECB)。在明文里面改一个字母,ECB密文对应的那一行会改变,CBC密文从那一行往后都会改变。

 

5 RSA加密(非对称加密算法)(Secruty.framework系统库)

 

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

非对称加密中使用的主要算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

特点:

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了

 

但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据。

### AES 加密模式概述 AES(高级加密标准)是一种分组密码,支持多种操作模式来增强安全性并适应不同的应用场景。以下是常见的五种AES加密模式: #### 电子码本 (ECB, Electronic Codebook) ECB 是最简单的分组密码模式,在这种模式下,明文被分割成多个固定大小的数据块,每个数据块独立地通过相同的密钥进行加密[^1]。 优点在于其实现简单快速,缺点则是相同的消息会产生完全一致的密文,这可能导致某些情况下泄露关于原始消息的信息。 ```python from Crypto.Cipher import AES cipher = AES.new(key, AES.MODE_ECB) ciphertext = cipher.encrypt(plaintext) ``` #### 密码分组链接 (CBC, Cipher Block Chaining) 在 CBC 模式中,每个待加密的数据块先与其前一个已加密的数据块的结果异或后再送入加密算法处理。对于第一个数据块,则使用初始化向量 IV 进行异或运算。 这种方式使得即使两个文件有重复的内容部分,只要位置不同也会得到完全不同结果,从而提高了安全性和抗攻击能力。 ```python iv = b'0'*16 # Initialization Vector cipher = AES.new(key, AES.MODE_CBC, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### 密文反馈 (CFB, Cipher Feedback) CFB 可以把块密码变成一种流式的加密方式,它的工作原理与 CBC 类似,区别是在于 CFB 的输入不是直接来自上一轮输出而是经过移位寄存器后的值[^2]。 此特性允许接收方可以在接收到一部分数据之后立即开始解密而无需等待整个报文传输完毕。 ```python iv = b'0'*16 cipher = AES.new(key, AES.MODE_CFB, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### 输出反馈 (OFB, Output Feedback) OFB 将块密码转换成了流密码的一种形式,其中每次只对IV 或者之前产生的密文应用加密函数生成新的密钥串,并以此作为下一个字符或字节序列的掩码。 该方法的一个显著特点是其错误不会传播到后续的数据单元里去。 ```python iv = b'0'*16 cipher = AES.new(key, AES.MODE_OFB, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### Galois/Counter Mode (GCM) GCM 同时提供了机密性和认证功能,这是一种高效的并行化实现方案,适用于高速网络环境下的大量数据传输保护需求。 除了提供传统的保密服务外,还能够验证消息的真实性以及完整性。 ```python nonce = b'unique nonce' cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) ciphertext, tag = cipher.encrypt_and_digest(plaintext) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值