加密
对称加密

- 对称双方使用同一个密钥,使用加密算法配上合适的密钥来加密,解密时使用加密过程的完全逆过程配合密钥来进行解密
- 经典算法:DES,AES
- 优点:加密计算小,速度快,适合对大量数据进行加密的场景
- 缺点:密钥传输泄露问题
栗子:AES
- AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
AES加密
public static String encrypt(String text) throws Exception {
// 私钥 AES固定格式为128/192/256bits.即:16/24/32bytes。DES固定格式为128bits,即8bytes。
String key = "aaaaaaaaaaaaaaaa";
// 初始化向量参数,AES 为16bytes. DES 为8bytes
String iv ="bbbbbbbbbbbbbbbb";
// 两个参数,第一个为私钥字节数组, 第二个为加密方式AES或者DES
Key keySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
// 实例化加密类,参数为加密方式,要写全
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// 初始化,此方法可以采用三种方式,按服务器要求来添加。(1)无第三个参数(2)第三个参数为SecureRandom
//(3)采用此代码中的IVParameterSpec
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);// random = new SecureRandom();中random对象,随机数。(AES不可采用这种方法)
// cipher.init(Cipher.ENCRYPT_MODE, keySpec);
// SecureRandom random = new SecureRandom();
// cipher.init(Cipher.ENCRYPT_MODE, keySpec, random);
byte[] bytes = cipher.doFinal(text.getBytes());// 加密操作,返回加密后的字节数组,然后需要编码。主要编解码方式有Base64, HEX, UUE,
// 7bit等等。此处看服务器需要什么编码方式
String result = Base64.encodeToString(bytes, Base64.DEFAULT);
return result;}
AES解密
public static String decrypt(String text) throws Exception {
String keySpec = "aaaaaaaaaaaaaaaa";
String iv = "bbbbbbbbbbbbbbbb";
byte[] textBytes = Base64.decode(text.getBytes(), Base64.DEFAULT);
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
Key key = new SecretKeySpec(keySpec.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, ivSpec); // 与加密时不同MODE:Cipher.DECRYPT_MODE
String result = cipher.doFinal(textBytes);
return result; }
非对称加密
- 原理:使用公钥对数据进行加密得到密文;使用私钥解密得到明文

应用场景:
1.数字签名验证
使用私钥签名,发送签名数据和原数据,采用公钥验证,如果验证后数据等于发过来的原数据则正确,反之

加密签名:发送方使用对方公钥加密得到密文,在自己的私钥签名,接收方使用自己的私钥解密,用公钥验证

- 经典算法: RSA,DSA
BASE64
- 将二进制数据转换成由64个字符组成的字符串编码算法
- 用途:让原数据具有字符串所具有的的特性,如可以放在URL中传输,可以保存到文本文件,可以通过普通的聊天软件进行文本传输
- 把原本人眼可以读懂的字符串变成读不懂的字符串,降低偷窥风险
压缩与解压缩
- 压缩:把数据换一种方式来存储,以减少存储空间
- 解压缩:把压缩后的数据还原成原先的数据,以便使用
- 常见压缩算法:MP3,JEPG,DEELATE
HASH
-
定义:把任意数据转换成指定大小的范围(通常很小)的数据
-
左右:摘要,数字指纹
-
经典算法:MD5,SHA1,SHA256
-
实质用途
- 数据完整性验证
- 快速查找
- 隐私保护
加上hash减小签名数据

网友评论