java----加密/解密经常使用算法

1、经常使用的加密/解密算法 算法

1.Base64 ide

严格来讲,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中。 编码

经常使用场景:对文件、URL等进行Base64编码,以字符串方式发送给对方;对方在进行解码。 加密

2.AES code

AES是目前用的比较普遍的一种加密/解密算法。先来一段代码 ip

public class AESUtil {

    @Value("${aes.key}")
    String key;

    byte[] iv = { 0x31, 0x35, 0x36, 0x33, 0x34, 0x33, 0x32, 0x31, 0x37, 0x37, 0x39, 0x35, 0x34, 0x33, 0x30, 0x31 };


    public String encrypt(String content) {
        try {
            Security.addProvider(new BouncyCastleProvider());
            Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            Cipher in = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");//算法/模式/补码方式
            in.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,须要一个向量iv,可增长加密算法的强度
            byte[] enc = in.doFinal(content.getBytes());
            return new String(Hex.encode(enc));
        } catch (Exception e) {
            log.error("加密遇到异常",e);
            throw new RuntimeException(e);
        }
    }

    public String decrypt(String encryptContent){
        try {
            Security.addProvider(new BouncyCastleProvider());
            Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            byte[] enc = Hex.decode(encryptContent.getBytes());
            Cipher out = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");//算法/模式/补码方式
            out.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,须要一个向量iv,可增长加密算法的强度
            byte[] dec = out.doFinal(enc);
            return new String(dec);
        }catch (Exception e){
            log.error("解密遇到异常",e);
            throw new RuntimeException(e);
        }
    }
}

由上面的代码可知,加密所须要的参数有:content(须要被加密的字符串)、key(加密须要的密码)。 字符串

key是本身设置的,因此对content加密后,若是不知道key的话,很难解密出来。 get

相关文章
相关标签/搜索