实验二 电子传输系统安全-进展1
上周任务
- 找到上学期电子公文传输系统并重新调试通过
- 学习加密相关知识,即gmssl
- 部署安装gmssl
- 使用gmssl测试证书
- 调试运行加装gmssl后的系统
上周任务完成情况
学号姓名 | 任务 | 完成情况 |
---|---|---|
宁心宇 | 找到上学期电子公文传输系统并重新调试通过 | 100% |
周擎睿 | 部署安装gmssl | 100% |
李文婧 | 学习加密相关知识,即gmssl | 100% |
林道坤 | 使用gmssl测试证书 | 100% |
张树杰 | 调试运行加装gmssl后的系统 | 100% |
具体任务情况
导入依赖
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.57</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-ext-jdk15on</artifactId>
<version>1.57</version>
</dependency>
工具类
import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
import java.io.UnsupportedEncodingException;
import java.security.Security;
import java.util.Arrays;
/**
* SM3 工具类
*/
public class Sm3Util {
/**
* 编码格式
*/
private static final String ENCODING = "UTF-8";
static{
Security.addProvider(new BouncyCastleProvider());
}
/**
*
* @param paramStr 要sm3加密的内容
* @return sm3加密后密文
*/
public static String encrypt(String paramStr){
String resultHexString = "";
try {
byte[] srcData = paramStr.getBytes(ENCODING);
byte[] hash = hash(srcData);
resultHexString = ByteUtils.toHexString(hash);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return resultHexString;
}
public static byte[] hash(byte[] srcData){
SM3Digest sm3Digest = new SM3Digest();
sm3Digest.update(srcData,0,srcData.length);
byte[] bytes = new byte[sm3Digest.getDigestSize()];
sm3Digest.doFinal(bytes,0);
return bytes;
}
/**
*
* @param str 明文
* @param hexString 密文
* @return 明文密文对比结果
*/
public static boolean verify(String str,String hexString){
boolean flag = false;
try {
byte[] srcData = str.getBytes(ENCODING);
byte[] sm3Hash = ByteUtils.fromHexString(hexString);
byte[] hash = hash(srcData);
if (Arrays.equals(hash,sm3Hash)){
flag = true;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return flag;
}
}
下载gmssl证书和密码套件等
下载链接:GMSSL - 国密SSL实验室
操作环境要求
-
Tomcat9.0
-
JRE1.8
-
eclipse:2023
1.JRE的加密策略需要切换到unlimited模式
首先找到eclipse下jre的路径:
然后在jre/lib/security下找到java.security,用记事本打开,将crypto.policy=unlimited前的‘#’去掉,切换到unlimited模式
如此,便可以进行加密策略的切换了
本周计划
推进登录口令密态存储和身份认证的工作
目前的文件虽然写了密级,但并没有加密,需要找一种算法去加密那些带密级的文件
学习访问控制相关的知识,设计一套方案,使用户只能按权限查看对应密级的文件