总结经验
文章平均质量分 54
qishandaxue
这个作者很懒,什么都没留下…
展开
-
局部变量字符数组在栈中的顺序
同类型局部变量入栈顺序为从大到小原创 2022-09-01 14:55:03 · 369 阅读 · 1 评论 -
有符号数乘法和数据类型
int square(int n)//计算平方的函数,是记录下有符号数和longlong类型运算情况,{ int k=0; u8 *p; long long a=0; a= (long long)n*n; p=(u8*)&a; printf("sizeof(int):%d sizeof(long):%d sizeof(long long):%d n=0x%x n=%d\r\n",sizeof(int),sizeof(long),sizeof(lo...原创 2021-10-28 14:16:44 · 175 阅读 · 0 评论 -
C语言无符号数减法
测试代码void ChkTest(void){ unsigned int cnt1 = 1; unsigned int cnt2 = 2; unsigned short a = 1; unsigned short b=-1;//等价于unsigned short b=0xFFFF; unsigned short c=0; c = a-b; printk("cnt1-cnt2=%x %d\r\n",cnt1-cnt2,cnt1-cnt2)...原创 2021-05-17 17:34:20 · 3677 阅读 · 0 评论 -
C语言for循环效率记录1
#if 1和#if 0 两种代码编写方式,经过反编译汇编对比得出:for循环逻辑指令少,但是存在循环跳转,因此展开循环体指令数量远超累加方式,执行效率低;累加方式逻辑指令多,但无跳转因此效率高。因为for循环只有3次,且循环体逻辑简单,因此展开书写更好,如果循环体逻辑复杂,则for循环方式更好!static u32 bits21Tou32(u8 *indata){#if 1 u32 temp=0; temp = (temp<<8) + indata[0...原创 2020-11-18 10:41:52 · 605 阅读 · 0 评论 -
头文件包含作用域
sys.h内容 《#ifndef __SYS__H__#define __SYS__H__#include "a.h"#include "b.h"#endif》a.h内容《#ifndef __A__H__#define __A__H__#include "sys.h"#include "b.h"int a;#endif》b.h内容《#ifndef __B__H__#define __B__H__#include "sys.h"#include "a.h"int...原创 2020-10-15 19:49:57 · 312 阅读 · 0 评论 -
单片机卡死分析记录
在原始项目新增了一个模块,调试阶段代码ok,调试使用了一个全局变量来加快调试效率,提测修改为局部变量后测试卡死了,由于代码量太多,死掉的位置输出的异常信息无法分析:OOPS! Core Dump:r0 : 0x20002400 r1 : 0x000001fdr2 : 0x000000bd r3 : 0x000000bdlr : 0x000000bd pc : 0x000000bdclr: 0x0101ce3d sp : 0x00000000r12: 0x000000bd...原创 2020-10-15 10:57:30 · 712 阅读 · 0 评论 -
SHA256算法效率和代码段大小关系
偶尔发现sha256算法的反汇编代码段将近8KB,超过预期,仔细查找发现sha256_process函数的内部代码书写方式比较特别(这种方式可以提高算法效率,减少函数调用产生的进出栈消耗),造成了巨大的flash资源浪费。详细说明见代码注释:#define GET_UINT32(n,b,i) \{ ...原创 2019-09-18 11:01:35 · 1222 阅读 · 0 评论 -
HMACSHA256原理解析
需要支持HMACSHA256算法,GitHub找到源码具体地址https://github.com/aperezdc/hmac-sha256/blob/master/hmac-sha256.c移植到目标平台,稍作处理测试ok了,原理:1.输入密钥key和固定的数据(0x36)进行异或操作生成一个64B的数据kx;2.使用kx+输入数据执行sha256算法得到32B的out;3.使用...原创 2019-08-14 17:28:38 · 25605 阅读 · 5 评论 -
国密SM2 SM3 SM4 算法记录
SM2加密结果有两种数据组织方式,最常见的是C1|C2|C3,另一种C1|C3|C2,具体解释:国密局推荐的SM2椭圆曲线参数(下图右侧输出的曲线参数);首先产生随机数计算出曲线点C1,2个32byte的BigInteger大数,即为SM2加密结果的第1部分,固定64B。第2部C2分则是真正的密文,是对明文的加密结果,长度和明文一样。第3部分C3是杂凑值,用来效验数据,固定32B。...原创 2019-06-16 14:20:21 · 4976 阅读 · 0 评论 -
gmssl生成的国密证书解析
国密认证遇到的一些问题记录:gmssl生成的key文件解析:gmssl生成的SM2证书文件解析:原创 2018-10-26 10:15:45 · 3219 阅读 · 0 评论 -
OEM_KEYSTORE
解析这个数组,真的费劲,类似X509格式,但实际缺对不上,应该是我某个地方没搞明白,暂时记录下const unsigned char OEM_KEYSTORE[] = { 0x30, 0x82, 0x06, 0x4f, /*tag,len=0x64f,data:...*/ 0x02, 0x01, 0x00, /*tag,len=0x1 data:版本1*/ 0x30, 0x82, ...原创 2018-07-17 16:26:18 · 385 阅读 · 0 评论 -
OPENSSL中RSA私钥文件(PEM格式)解析小计
生成步骤就不写了,自行百度。工作中要使用RSA2048公私钥做签名校验,使用openssl工具生成公私钥对,在导出数据时候发现私钥参数长度显示不对(或许是我搞错了),具体记录如下:Private-Key: (2048 bit)modulus:(n标准长度256B,实际输出257B,多了个00标红) 00:d8:8b:57:87:80:31:e3:c5:69:c3:14:77:ae:5e: ...原创 2018-05-08 16:13:58 · 2395 阅读 · 0 评论 -
nist随机数测试算法使用记录
网上找到开源的的nist算法,make之后发现算法太专业,不知道怎么用,经过一段时间摸索,弄清楚的写下来。源码目录:nist/sts-2.1.2/; 编译make我的随机数包rng2.dat是138M的二进制文件(只计算前128MB),执行所有运算大概耗时3个小时。1.运行./assess 8388608(128M位长度1073741824bit分成128段,每段1MB...原创 2016-06-03 09:30:29 · 14618 阅读 · 26 评论 -
二维码扫描之zxing与zbar的优劣
之前我有移植过zbar和zxing源码到linux平台,zbar移植的是C源码,zxing移植的是C++代码。两者对比:1.zxing支持更多的码制:datamatix、PDF417、等,zbar不能很好支持PDF417(但是在源码中有对于Pdf417码处理)。2.zxing的执行解码效率低于zbar,从耗费内存空间角度看,zbar更适合嵌入式设备开发,大部分手机app的解码采用的是zxi原创 2015-05-04 15:26:11 · 4913 阅读 · 0 评论