实验一-密码引擎-加密API实现与测试
实验一-密码引擎-加密API实现与测试
1 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习 (5分)
2 实现GMT 0018-2012密码设备应用接口规范的接口函数,至少实现:
1)设备管理中的打开设备,关闭设备,获取设备信息,产生随机数(4分)
2)密钥管理导出 ECC 签名公钥;SDF_ExportSignPublicKey_ECC I.导出 ECC加密公钥∶SDF_ExportEncPublicKey_ECC J. 产生 ECC非对称密钥对并输出∶SDF_GenerateKeyPair_ECC K. (6分)
3)非对称算法(至少支持SM2):外部密钥 ECC验证∶SDF_ExternalVerify_ECC ,内部密钥 ECC签名;SDF_InternalSign_ECC ,内部密钥 ECC验证∶SDF_InternalVerify_ECC 外部密钥 ECC加密∶SDF_ExternalEncrypt_ECC (8分)
4)对称算法(至少支持SM4)∶SDF_Encrypt 对称解密∶SDF_Dccrypt 计算 MAC∶SDF_CalculateMAC(6分)
5)杂凑算法(至少支持SM3):· 杂凑运算初始化∶SDF_HashInit· 多包杂凑运算∶SDF_HashUpdate· 杂凑运算结束∶SDF_HashFinal(6分)密钥管理要求(10分)
基于本标准设计、开发的密码设备在密钥管理方面,应满足以下要求; 1)设备密钥的使用不对应用系统开放; 2) 密钥必须用安全的方法产生并存储;
3) 在任何时间、任何情况下,除公钥外的密钥均不能以明文形式出现在密码设备外; 4) 密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取; 5) 密码设备内部存储的密钥应具备权限控制机制,防止非法使用和导出。设备状态要求(5分)
基于本标准设计、开发的密码设备在设备状态方面,应满足以下要求; 1) 密码设备应具有初始和就绪两个状态;
2) 未安装设备密钥的密码设备应处干初始状态,已安装设备密钥的密码设备应处于就绪状态; 3) 在初始状态下,除可读取设备信息、设备密钥的生成或恢复操作外,不能执行任何操作,生成或恢复设备密钥后,密码设备处于就绪状态;
4) 在就绪状态下,除设备密钥的生成或恢复操作外,应能执行任何操作; 5) 在就绪状态下进行的密钥操作,设备操作员应经过密码设备的认证。
0.代码链接
加密API实现与测试 · 王鹏宇/drawer - 码云 - 开源中国 (gitee.com)
1.打开设备,关闭设备,获取设备信息,产生随机数
对产生随机数的函数进行修改
项目结构:
效果截图:
2.密钥管理导出 ECC 签名公钥
通过调用openssl重写了api,实现了密钥管理,可以导出密钥到keypair.txt中。
项目结构:
效果截图:
3.非对称算法(至少支持SM2)
按照api要求,借助openssl实现了SM2算法的加密解密、签名验签。
3.1加解密
项目结构:
加解密测试效果图:
3.2签名验签
项目结构:
签名验签效果图:
4.对称算法(至少支持SM4)
项目结构:
效果截图:
5.杂凑算法
项目结构:
效果截图:
实验一-密码引擎-加密API实现与测试的更多相关文章
- springMVC web项目 对访问数据库的用户名密码进行加密解密
在使用springMVC开发web项目中,数据库的用户名,密码一般都是配置在.properties文件中 然后在通过.xml配置文件引入.properties的变量,例如 在config.proper ...
- 如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式.还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路.相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施 ...
- c#程序中对密码进行加密的方法
在ADO.NET中,向数据库添加数据时,怎样对数据中的密码进行加密?(也就是说在数据表中也看不到用户的密 码,只是一些经过编译后的字符串,以防止数据库管理员利用用户的密码进行非法操作.) 首先, ...
- Liferay 6.2 改造系列之二十四:修改liferay密码的加密方式
为了便于后期与Cas集成过程中使用数据库用户的方便,将liferay密码的加密方式改为SHA. 在/portal-master/portal-impl/src/portal.properties配置文 ...
- 使用kettle转换中的JavaScript对密码进行加密和解密
日常开发中,为了确保账号和密码的安全,时常要对密码进行加密和解密.然而kettle是怎么对密码进行加密和解密的呢? 下面的代码需要再转换中的JavaScript中运行. var encrypted_p ...
- 用户登录密码RSA加密后传输的实现,非明文密码传输
在用户登录页面,用户输入密码后,在传送到服务器端时,为防止在密码传送过程中,被如360这种东东给拦截到, 需要在传送前对密码进行加密,然后再传送! 利用RSA加密,在客户端使用公钥对密码进行加密,在服 ...
- 修改servu数据库密码 servu加密方式
项目要求可以有用户自行修改servu密码.servu可以通过odbc访问access\mysql\sqlserver数据库.我们直接通过创建web来修改就可以了. 不过问题来了,密码是加密的...通过 ...
- 使用springboot完成密码的加密解密
现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴这样的大公司来说,信息安全是最为重要的一个话题,举个简单的例子: 就像这样的密码公开化,很容易造成一定的信息的泄露.所以今天我们要讲的就 ...
- 前后端分离密码登陆加密RSA方案(java后端)
前言:密码加密有很多种方案,这里不做过多讨论,本篇文章是基于RSA加密实现. 首先在前端工程中需要引入加密js: "jsencrypt": "2.3.1",(注 ...
- 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密
项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...
随机推荐
- 在GCP的Kubernetes上安装dapr
1 简介 我们之前使用了dapr的本地托管模式,但在生产中我们一般使用Kubernetes托管,本文介绍如何在GKE(GCP Kubernetes)安装dapr. 相关文章: dapr本地托管的服务调 ...
- 关于integer数据对比的问题
先看案例 Integer c1 = 127; Integer c2 = 127; c1 == c2; //true Integer d1 = 128; Integer d2 = 128; d1 == ...
- 【DS】1.2
top-iron man 算法 效率度量 时间T=T(n) 1.顺序忽略2.只选一个基本操作分析3.多层嵌套只考虑最深的循环循环了几次 test1: test2: 空间 原地工作:算法所需内 ...
- JDK、tomcat、MySQL5.7安装教程
JDK自定义安装 一.安装JDK.JRE 1.在E盘下建立一个java文件夹,在java文件夹下分别建立jdk和jre文件夹 2.双击安装包 3.点击下一步,更改安装路径,安装到第一步创建好的jdk文 ...
- PID控制_位置式
位置式: 1. 位置式: pid.c: float PID_calculate( float dT_s, //周期(单位:秒) float in_ff, //前馈值 float expect, //期 ...
- js程序
JavaScript 程序 计算机程序是由计算机"执行"的一系列"指令". 在编程语言中,这些编程指令被称为语句. JavaScript 程序就是一系列的编程语 ...
- Docker中Mysql容器忘记密码的处理方法
今天非常的倒霉,因为学习了Vue的相关知识,想自己写一个后端服务器来练习一下Vue 然后 忘记了Docker中Mysql的密码... 很抽象 下面是我的解决方法 一.如果在本地的Navicat Pre ...
- Gold Transportation
题目 百度 分析 很容易想到二分答案 然后考虑判定 条件很多,奇奇怪怪 那就上网络流吧 边权 \(\leq mid\) 两个城市连边 \(inf\) 源点与所有城市连边,边权为本城市有金矿量 城市与自 ...
- 流量加密之:使用Openssl反弹加密shell
流量加密之:使用Openssl反弹加密shell 目录 流量加密之:使用Openssl反弹加密shell 1 背景 2 生成SSL证书 3 Linux平台下 3.1 在Kali上使用 OpenSSL ...
- pycharm 关闭符号自动补全
insert pair bracket 是三种括号的自动补全 insert pair quote 是两种引号的自动补全