当前位置: 首页 > wzjs >正文

做网站需要域名 域名是啥论坛网站建设软件

做网站需要域名 域名是啥,论坛网站建设软件,中国企业网中国商报,音频网站模板[密码学实战]彻底理解位(bit)与字节(byte)在十六进制处理中的区别 一、为什么需要区分位和字节? 在密码学开发中,SM2、AES等算法的密钥长度常以位(bit)为单位描述,而实际代码操作却以字节(byte)为基本单位。这种差异若理解不透彻&#xff0…

[密码学实战]彻底理解位(bit)与字节(byte)在十六进制处理中的区别

一、为什么需要区分位和字节?

在密码学开发中,SM2、AES等算法的密钥长度常以位(bit)为单位描述,而实际代码操作却以字节(byte)为基本单位。这种差异若理解不透彻,极易导致以下问题:

  • 缓冲区溢出:分配内存时混淆单位
  • 密钥截断:错误处理Hex字符串导致密钥强度降低
  • 跨平台兼容性问题:不同系统对数据类型解释不同

二、核心概念对比

1. 基本定义

单位符号大小典型应用场景
位(bit)b0或1描述算法强度(如SM2=256b)
字节(byte)B8位内存分配、网络传输

2. 十六进制(Hex)的特殊性

十六进制是字节的人类可读表示形式

  • 1字节 = 2个Hex字符(范围00~FF
  • 重要公式
    密钥位数 = Hex字符串长度 × 4
    示例:64字符Hex → 64×4=256位密钥
    

三、SM2密钥的三种表示形式

以256位SM2密钥为例:

1. 位表示(理论值)

key_bits = 256  # 仅用于描述长度

2. 字节数组(内存存储)

uint8_t key_bytes[32] = { 0x00, 0x01, ..., 0xFF 
}; // 32字节=256位

3. Hex字符串(可读格式)

char hex_str[65] = "0001...FFFF"; // 64字符

四、关键代码实现

1. 字节数组 ↔ Hex字符串转换

// Hex转字节数组(安全版)
int hex_to_bytes(const char *hex, uint8_t *bytes, size_t len) {if (strlen(hex) != len*2) return -1;for (size_t i = 0; i < len; i++) {if (sscanf(hex + 2*i, "%02hhx", &bytes[i]) != 1) {return -1;}}return 0;
}// 字节数组转Hex(线程安全版)
void bytes_to_hex(const uint8_t *bytes, char *hex, size_t len) {for (size_t i = 0; i < len; i++) {snprintf(hex + 2*i, 3, "%02x", bytes[i]);}
}

2. 密钥长度验证

bool is_valid_sm2_key(const char *hex) {const size_t hex_len = 64; // SM2的256位对应64字符Hexif (strlen(hex) != hex_len) return false;for (size_t i = 0; i < hex_len; i++) {if (!isxdigit(hex[i])) return false;}return true;
}

五、开发中的常见陷阱

陷阱1:未初始化内存

// 错误示例
char hex[64]; // 未初始化,缺少NULL终止符
sprintf(hex, ...); // 可能越界// 正确做法
char hex[65] = {0}; // 预留NULL位置

陷阱2:大小写敏感问题

// 兼容大小写的比较方法
if (strncasecmp(hex1, hex2, 64) != 0) {// 密钥不匹配
}

陷阱3:跨平台差异

  • Windows x86默认char是有符号的
  • 建议使用uint8_t代替unsigned char

六、实战案例:SM2密钥生成API

#include <openssl/sm2.h>int generate_sm2_keypair(char **pubkey_hex, char **prikey_hex) {EC_KEY *key = EC_KEY_new_by_curve_name(NID_sm2);if (!key || !EC_KEY_generate_key(key)) return -1;// 提取公钥(04||X||Y格式)const EC_POINT *pub = EC_KEY_get0_public_key(key);uint8_t pub_bytes[65]; // 04 + 32(X) + 32(Y)EC_POINT_point2oct(..., pub_bytes, sizeof(pub_bytes), ...);// 提取私钥const BIGNUM *pri = EC_KEY_get0_private_key(key);uint8_t pri_bytes[32];BN_bn2bin(pri, pri_bytes);// 转换为Hex*pubkey_hex = malloc(65*2 + 1);*prikey_hex = malloc(64 + 1);bytes_to_hex(pub_bytes, *pubkey_hex, 65);bytes_to_hex(pri_bytes, *prikey_hex, 32);EC_KEY_free(key);return 0;
}

七、总结

操作输入输出工具函数
生成密钥256位参数32字节数组EC_KEY_generate_key
字节→Hex32字节数组64字符字符串bytes_to_hex
Hex→字节64字符字符串32字节数组hex_to_bytes

八、延伸思考

  1. 性能优化:查表法替代sprintf实现更快的Hex转换
  2. 安全增强:使用secure_memset清空敏感内存

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!


文章转载自:

http://x0SOaxyd.dkwry.cn
http://cxfVk3Jh.dkwry.cn
http://ZhAGdoAX.dkwry.cn
http://4vevRMc4.dkwry.cn
http://xFuR22jx.dkwry.cn
http://QX0pnbZM.dkwry.cn
http://HIaG8tyC.dkwry.cn
http://aI3TNW9V.dkwry.cn
http://bYS9fONg.dkwry.cn
http://TnRL8Xtv.dkwry.cn
http://MBscswPM.dkwry.cn
http://LHdziS8E.dkwry.cn
http://PHtch2Vg.dkwry.cn
http://LBPahtx4.dkwry.cn
http://YNKvTa2T.dkwry.cn
http://osPvhh9f.dkwry.cn
http://pHMZIGxv.dkwry.cn
http://LbhPinl0.dkwry.cn
http://Z0x4KCNh.dkwry.cn
http://6usnmTCB.dkwry.cn
http://sBLbg7eJ.dkwry.cn
http://bbiPPkAF.dkwry.cn
http://sc22Owe8.dkwry.cn
http://ZXCMtf5H.dkwry.cn
http://FsViHDkp.dkwry.cn
http://u3Zcqq2M.dkwry.cn
http://Q4hQmcXV.dkwry.cn
http://9v9oP0yZ.dkwry.cn
http://LXZRz0OS.dkwry.cn
http://yMJXtuWZ.dkwry.cn
http://www.dtcms.com/wzjs/677578.html

相关文章:

  • 做html5网站教育网站集群建设申请
  • 装修公司网站平台网站流量工具
  • 网站开发中视屏怎样编辑到网页上广州开发区人才交流服务中心
  • 英文网站建设服务合同网站推广需要多少钱
  • 科研院所网站建设公司网站制作商
  • 网站建设创新能力痛点网站推广策略
  • 百度怎样做网站并宣传网站163邮箱入口
  • 企业网站的建设要注意哪些方面wordpress 标题描述
  • 网站建设 我们是专业的资讯门户类网站模板
  • 沧州企业网站200款软件大全
  • php如何做音乐网站河北建设网站首页
  • it公司怎么在国外网站做宣传长春做网站哪家好
  • 长春公司做网站找哪个公司好企业推广视频
  • 个人主页网站欣赏用自己电脑做服务器 网站
  • 个人网站建设价格普洱做网站的报价
  • 如何做挂qq的网站重庆建站公司网站模板
  • 上海电信网站备案深圳网站制作建设服务公司
  • 服装html网站模板下载wordpress注册用户邮件验证
  • 网站建设是否包含等保软件论坛网站有哪些
  • 大王庄网站建设公司天津网站优化实战
  • 手机网站制作流程信息发布网
  • 网站关键词指数查询工具公司做的网站入哪个会计科目
  • 怎么用电脑做网站服务器html5软件下载手机版
  • 成都网站建设询q479185700霸屏做网站的会计分录
  • 网站建设静态代码wordpress 隐形按钮
  • 沧州网站运营公司购物手机网站怎么做
  • 凯里专注网站建设报价58同城会员网站怎么做
  • 永久免费crm软件下载在线刷seo
  • php网站开发案例教程 dvdwordpress采集淘宝商品
  • 电商网站平台有哪些功能模块网站建设的网页怎么做