首页 > 编程知识 正文

使用密钥管理服务,密钥管理的目的

时间:2023-05-04 21:18:28 阅读:116205 作者:1304

获取源代码: https://gitee.com/fly tortoise/project/tree/c /

如果有什么好项目,欢迎来到私人信件公众号: Rocker创意工作室

01

项目简介

设计密钥管理系统

功能要求:

1 )生成随机数

2 )生成最大素数

3 )生成密钥对,利用密钥对进行签名和验证

4 )数据加密和解密

02

项目总结

功能1:生成随机数,使用 rand()函数即可

功能2:需要用户输入阀值,降序依次判断是否为素数即可

判断素数时,只能判断到num^(1/2)

判断代码如下。

//素数bool judge (统一内建)统一内建=(统一内建) sqrt () (双精度) ) num ) ); int i=0; for(I=2; I标志; I ) if(num%I==0)返回假; }返回真; }

功能3:生成密钥对,并使用密钥对签名和验签

密钥对:在非对称加密中,使用算法的通常是RSA,这次项目使用RSA2048

签名根据hash值加密。 即签名=hash RSA2048

(混列算法使用) SHA256 (角色)标识数据的唯一性)

签名作用:表示此数据由本人创建,未被篡改

因此,签名本身没有秘密属性,任何人都可以验证它

签名的流程如下。 (私钥只有自己有,所以只有自己签名。)。

解除签名并验证的流程如下。 (任何人都可以拥有公钥,所有人都可以验证,此数据是否未被篡改。)。

功能4:对数据进行加密和解密

加密使用对称密钥,该项目采用AES256 ECB

03

注意事项

1. 为何加密不使用RSA算法?

a )可以使用公钥进行加密(这样可以解开拥有私钥的人,保证了机密性)。

但是RSA算法的速度比AES慢

2. RSA2048,SHA256,AES256,其中 2048,256指的是位,不是字节

3. RSA 公钥解签后,hash1的长度为256字节

对数据SHA256之后,hash2的长度为32字节

只需要对比前32个字节即可

04

经验教训

问题:

如果使用PEM_read_RSAPrivateKey,则返回值不是NULL,但会发生段错误

原因:

由于没有使用头文件#include openssl/pem.h,gcc已自动替换为其他函数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。