小丑鱼python_sm4加密 解密(oc)

本文介绍了如何使用Python实现SM4加密解密,包括加密为十六进制字符串和解密。内容涵盖加密解密原理、密钥长度、数据长度要求,以及C语言实现的示例代码片段,同时提供了GitHub上的示例代码链接。
摘要由CSDN通过智能技术生成

前几天项目用到sm4加密解密,加密为十六进制字符串,再将十六进制字符串解密。网上百度了下,sm4是密钥长度和加密明文加密密文都为16个字节十六进制数据,网上的sm4 c语言算法很容易搜到,笔者刚开始没怎么理解,以为只能对16字节数据进行加密,并且不论是多少字节的数据加密出来都是16字节的。后来看了下源码,应该是加密的数据应该是16字节或者16的整数倍个字节的数据,若不够16倍数字节应该补0x00数据,最后加密出来的数据和输入数据的长度应该一致,即

密文长度=明文长度

而且密钥长度一致,是16字节的。c的代码里面输入输出都是十六进制数据,需要将字符串转为char类型数组,并且保证长度是16整数倍

+(unsigned char*)hexEnc:(NSString*)strInput{

NSData* data = [strInput dataUsingEncoding:NSUTF8StringEncoding];

NSUInteger length = data.length;

NSUInteger plusLength;

if(length % 16 == 0){

plusLength = 0;

}

else{

plusLength = 16 - length % 16;

}

NSMutableString* new_str = [[NSMutableString alloc] initWithString:strInput];

for (int i =0;i < plusLength;i++) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值