基于GmSSL的SM4 ECB对称加解密接口封装


/*
sm4 ecb模式加密/解密
Flag        运算标志,0为加密,1为解密。
Key         sm4算法密钥。
In          sm4算法ecb运算输入数据。
Out         sm4算法ecb计算得到密文。
Len         ecb明文/密文长度。
*/

int SM4_ECB(int Flag, unsigned char *Key, unsigned char *In, unsigned char *Out, unsigned int Len)
{
    int i;
    int Ret;
    int PadLen;
    unsigned char Pad[256];//可以根据实际情况malloc需要的空间
    sms4_key_t key;
    
    if(!Flag)
    {
        memset(Pad, 0, sizeof(Pad));
        Ret = AddPadding(In, Len, Pad, &PadLen);//检查是否是16倍数,不是补全
        if(Ret < 0)
        {
            return -2;
        }
        
        sms4_set_encrypt_key(&key, Key);
        
        for(i = 0;i < PadLen / 16;i++)
        {
            sms4_encrypt(Pad + i * 16, Out + i * 16, &key);

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值