开放原子训练营(第一季)铜锁探密shell终端实现加密解密
最近在 csdn
发现了这个国密活动,想着学习一下商用密码的一些原理和应用技术。在这里,我想分享一下我的学习心得。
这个活动是由开放原子开源基金会&铜锁社区共同举办,内容包含4次课程,分别是:商用密码介绍和铜锁密码库入门、常用国密算法编程入门与实战、实战国密证书和国密传输协议、实战铜锁国密应用和结营作业说明
每一部分老师都很照顾小白,真正做到了由浅入深,不会让直播那么枯燥,让新手也能够跟上老师的步伐,在这个活动中,我主要学习了常用的国密算法,比如 SM2
、SM3
和 SM4
,以及如何使用铜锁密码库这个 SDK
。
我个人觉得在这个活动中,最让我受益的是学习了 SM4
加密算法和 SM3
杂凑算法。SM4
是一种对称加密算法,它能够在保证安全性的同时,提供高效的加解密速度。而 SM3
则是一种哈希算法,它可以将任意长度的数据转换为一个固定长度的哈希值,从而保证数据的完整性和安全性。
老师也通过代码进一步说明其加密原理,有种醍醐灌顶的感觉,代码无疑是最直接的
#include <openssl/evp.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
static int sm4_enc(const unsigned char *key, const unsigned char *iv,
unsigned char *in, int inlen, unsigned char *out,
int *outlen)
{
EVP_CIPHER_CTX