加密实例

DES:数据加密标准,密钥偏短(56位)、生命周期短(避免被破解)。

3DES:密钥长度112位或168位,通过增加迭代次数提高安全性 。处理速度慢、密钥计算时间长、加密效率不高 。

AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击 。密钥建立时间短、灵敏性好、内存需求低、安全性高 。

具体实现:

生成密钥

try {
//密钥生成器
KeyGenerator keyGenerator = KeyGenerator.getInstance(“DES”);
//初始化密钥长度
keyGenerator.init(56);
//生成密钥
SecretKey secretKey = keyGenerator.generateKey();
//密钥生成数组
byte[] key = secretKey.getEncoded();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();

    }

加密

//恢复密钥
SecretKey secretKey = new SecretKeySpec(key, “DES”);
try {
//Cipher 工具类
Cipher cipher = Cipher.getInstance(“DES”);
//初始化模式
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
//加密 data加密内容
byte[] cipherByte = cipher.doFinal(data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();

    }

解密:

//恢复密钥
SecretKey secretKey = new SecretKeySpec(key, “DES”);
try {
//Cipher 工具类
Cipher cipher = Cipher.getInstance(“DES”);
//初始化模式
cipher.init(Cipher.DECRYPT_MODE, secretKey);
//加密 data加密内容
byte[] cipherByte = cipher.doFinal(data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();

    }

DES、3DES、AES三种加密方式大致一致,只是在进行加解密时,放置不同的类型,具体如下:

DES 类型 DES
3DES 类型 DESede
AES 类型 AES
加密和解密用法一致,根据Cipher常量来区分。

ENCRYPT_MODE 加密常量
DECRYPT_MODE 解密常量
WRAP_MODE 包装常量
UNWRAP_MODE 密钥解包常量
PUBLIC_KEY 解包“公钥"常量
PRIVATE_KEY 解包”私钥“常量
SECRET_KEY 秘密密钥常量
MD5

加密:

      //确定计算方法

    MessageDigest md5=MessageDigest.getInstance("MD5");

    BASE64Encoder base64en = new BASE64Encoder();

    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));

    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
    BASE64Encoder base64en = new BASE64Encoder();

    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));

    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));

原文来自:https://blog.csdn.net/qq_33240767/article/details/80730654

你可能感兴趣的:(加密实例)