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

相關文章
相關標籤/搜索