C++硬核手搓国密算法:不用第三方库,头铁就完事儿了!

C++硬核手搓国密算法:不用第三方库,头铁就完事儿了!_第1张图片

国密算法:不用库?你咋不上天呢?

(但既然你头铁,我陪你!)

各位勇士们,今天我们要干一件疯狂的事——用 纯C++ 手搓SM2/SM3/SM4国密算法,不借助任何第三方库
(温馨提示:此操作可能导致脱发、暴躁、怀疑人生,请备好护肝片和咖啡)


SM3哈希算法:手搓“数据指纹”

(代码量:初级修仙)

先挑个软柿子捏——SM3,它的作用是把数据变成一串256位的“指纹”。比如你可以用它验证文件是否被篡改,效果堪比“你妈认你的速度”。

核心步骤:

  1. 消息填充:把数据塞到满足512位倍数,最后8字节写数据长度,像极了“凑满减包邮”。
  2. 迭代压缩:把数据切成512位的块,用压缩函数疯狂摩擦。

C++代码框架(简化版):

#include 
#include 
#include 

// SM3常量定义(部分)
const uint32_t T[64] = {
   
    0x79CC4519, 0xF3988A32, 0x7311FCD3, 0x... // 此处省略64个魔数
};

// 循环左移
uint32_t ROTL(uint32_t x, int n) {
   
    return (x << n) | (x >> (32 - n));
}

// 压缩函数(简化到妈都不认)
void CF(uint32_t* V, uint8_t* block) {
   
    uint32_t W[68

你可能感兴趣的:(C++个人杂记,物联网,国密算法,国密,算法,密码学,c++,c语言)