# 安全校验工具包 **Repository Path**: LLAHN-TOOLS/lil-llahn-security-common ## Basic Information - **Project Name**: 安全校验工具包 - **Description**: 常用的安全校验的工具包 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安全校验工具包 ## 介绍 基于JDK8及以上自带的加密工具包,整理的一些列加密工具 ### 备注 另注意:如果使用JDK自带的加密方式不行的话,可以尝试使用BouncyCastle。 我们平常都使用jdk自带的加密包对数据进行加密,加密方式也都是使用的默认的,如果我们想选择别的加密方式,发现会报错,比如如下代码: ``` Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES")); cipher.doFinal("QWEASDZS".getBytes("UTF-8")); ``` 这时候我们就需要借助BouncyCastle了。 #### 使用BouncyCastle有两种方式 + 方式一 + 去BouncyCastle官网下载provider的包,然后放入$JAVA_HOME\jre\lib\ext目录下 + 修改配置文件$JAVA_HOME\jre\lib\security\java.security,加入一行配置:security.provider.按顺序填数字=org.bouncycastle.jce.provider.BouncyCastleProvider + 然后执行以下代码即可: ``` Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES")); cipher.doFinal("QWEASDZS".getBytes("UTF-8")); ``` + 方式二 + 在代码中通过maven引入BouncyCastle的包 ``` org.bouncycastle bcprov-jdk15on 1.56 ``` + 无需像方式一一样修改配置文件,直接在代码中手动添加provider: ``` Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES")); cipher.doFinal("QWEASDZS".getBytes("UTF-8")); ``` > 注意事项:出于某些原因,可能需要去官网下载JCE包,替换掉$JAVA_HOME\jre\lib\security目录下的内容,其次密钥的长度也要注意。