首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

全志R128 SDK HAL 模块开发指南——Crypto Engine

CE 模块初始化,主要申请中断、clk 初始化等 函数原型: int sunxi_ce_init(void) 参数: 无 返回值: 0:成功 负数:失败 CE 去初始化接口 CE 模块去初始化,主要注销中断等...函数原型: int sunxi_ce_uninit(void) 参数: 无 返回值: 0:成功 负数:失败 AES 算法加解密接口 主要实现对 AES 算法进行加解密 函数原型: int do_aes_crypto...(crypto_aes_req_ctx_t *req_ctx) 参数: req_ctx: 为 AES 算法上下文的结构体 返回值: 0:成功 负数:失败 typedef struct { uint8...*/ uint32_t bitwidth; /*RSA算法位宽*/ } crypto_rsa_req_ctx_t; RNG 算法运算接口 主要实现随机数的生成 函数原型: int do_rng_gen...(crypto_rsa_req_ctx_t *req_ctx) 参数: req_ctx: 为 RNG 算法上下文的结构体 返回值: 0:成功 负数:失败 typedef struct { uint8

14410

成功解决“Run-Time Check Failure #2 - Stack around the variable ‘arr‘ was corrupted.“问题

翻译一下就是: 运行时检查失败#2-变量“arr”周围的堆栈已损坏。 造成这个错误的原因是: 内存越界 那么遇到这种情况我们该如何解决呢?...如果您遇到的报错场景比这段函数复杂许多,不要担心,下面会提供给你一些解决思路: 造成这个错误的原因是: 内存越界 解决方向 通常是数组下标访问越界,或是指针访问数组时造成访问越界 注意检查的点...,则可访问的范围是: 从*arr开始,到*(* (arr + m-1) + n-1)为止 需要注意的是, 很多朋友在使用memcpy()函数或memset()函数时也会导致程序报这个错误,以memcpy...为例,主要原因是memcpy()函数拷贝的字节数大于目的地的空间大小了,这样同样会造成内存越界访问,如: 因此需要检查一下传入函数的字节数是否超出了目的地数组的大小....结语 希望上面提供的线索可以帮助到大家在代码中查找出现了什么问题.学海漫浩浩,我亦苦作舟!欢迎大佬评论或私信我,一起学习,一起进步.Bug Free!

3.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言】memcpy()函数(内存块拷贝函数)

    二.memcpy()函数的具体使用 memcpy()函数的使用场景是: 当我们想拷贝一个整型数组/结构体/枚举常量等strcpy()函数无法拷贝的数据时,我们可以考虑使用memcpy()函数来完实现这一诉求...四.模拟实现my_memcpy()函数的不足 首先需要感谢一下这位大佬指出了模拟实现代码中存在的问题: 然后,我先在vs2022环境中测试了一下库函数在面对该问题时的处理结果: 即当源拷贝地址与目标拷贝地址重叠时...让我们再来看一下文章开头时C语言标准对memcpy()函数的定义: 也就是说,C标准是不要求memcpy()函数能够拷贝重叠内存块的,如果我们期望使用可以重叠的内存块拷贝函数,那么另一个C标准库函数...(注:在前面的演示中使用vs2022编译器测试memcpy()函数拷贝重叠内存块仅仅是因为vs编译器对memcpy库函数的实现较为严谨,当我们换用别的编译器时,这个结果就有可能发生变化,但无论各家编译器的底层实现逻辑是怎样的...综上,在memcpy()函数部分,我将不再深入去探讨内存块重叠情况的内存拷贝的原理,图示以及模拟实现.而是将这部分的内容转移至对memmove()函数的详解博客中进行探讨.如果有感兴趣的朋友可以移步这篇博客

    1.1K10

    数据处理思想和程序架构: 使用Mbedtls包中的SSL,和服务器进行网络加密通信

    TCP连接通信 为了保证此篇文章能够让所有人都能应用,我就假设我的程序里面已经实现了TCP连接\ 然后规定: /*假设接收网络数据函数*/ int net_recv(char *data); /*假设TCP...7.增加自己的随机数函数 和 时间戳返回函数 ?.../** * @brief 自定义接收函数(把自己的接收函数放到此函数中) * @param None * @param None * @param None * @retval None * @...mbedtls_ssl_conf_rng( &conf, mbedtls_ctr_drbg_random, &ctr_drbg ); // 配置调试回调函数 // mbedtls_ssl_conf_dbg...注意: 1.如果显示这个..单片机不行,换个大点的型号的 我用的STM32F103RET6现在都有点不够使用,正在研究源码,看看怎么省内存. ? 2.我堆设置的是  a000 ?

    2.8K42

    C语言——动态内存管理与内存操作函数

    2.在堆区分配 堆区中存储的主要是函数的形参,局部变量; 主要是用于系统自动分配给函数内部的局部变量的,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放...; malloc这个函数向内存申请一块连续可用的函数,并返回指向这块内存空间的指针; 如果开辟内存成功,则返回指向开辟好的空间的指针 如果开辟内存失败,则返回NULL(空)指针,所以在使用malloc返回值之前要先检查...是调整之后的大小 函数返回值是调整之后的内存起始位置 调整空间失败会返回NULL 在成功调整空间时,realloc存在两种情况: 1.原来空间之后有足够的空间 2.原来空间之后没有足够的空间 情况1:...四、内存操作函数 C语言中既有对字符串进行操作的函数,也有对内存函数,接下来,学习几个C语言内存库函数 我们知道strcpy是对字符串进行拷贝,只能完成拷贝字符串,而内存函数中memcpy就是对内存中存储的数据进行拷贝...函数从source的位置开始向后复制num个字节的数据到destination指向的内存位置 memcpy函数在遇到'\0'时不会停下来 1> memcpy函数使用 #include

    8510

    开箱体验Rust,Come on!!!

    Dear,大家好,我是“前端小鑫同学”,长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~ 最近在看一下桌面端应用的开发,在看了一些Electron的使用后又了解到了一个更加新颖的Tauri...编写代码前的准备: VSCode相关插件 IntelliJ IDEA插件 注:我经常使用的编辑器就是这两种了,当然还有其他的一些编辑器也有相关的插件支持,可以访问Rust文档。...("请输入一个数字"); // 使用mut来声明可变变量,仅使用let定义的变量没办法二次赋值 // ::代表new是String的关联函数,类同Java或其他语言中的静态方法...:表示我们在此使用guess的引用,它们指向内存的同一块空间 // &mut:表示此处的接收的引用也是可变的 io::stdin().read_line(&mut guess).expect...("读取失败"); // 通过{}占位符来输出guess println!

    41320

    【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )

    ) 一、修改内存页属性 基础上 , 先修改内存页属性 , 取得修改内存的权限 ; 然后开始进行函数拦截 ; 首先 , 拼装 ARM 架构下的无条件跳转指令 ; /* B 无条件跳转指令 */ unsigned...*/ void* pBase = (void*)(0xFFFFF000 & (int)pFunc); /* 修改整个内存页属性 , 修改为 可读 | 可写 | 可执行 , * 避免因为内存访问权限问题导致操作失败...* mprotect 函数只能对整个页内存的属性进行修改 * 每个 内存页 大小都是 4KB */ int ret = mprotect(pBase, 0x1000, PROT_WRITE...| PROT_READ | PROT_EXEC); /* 修改内存页属性失败的情况 */ if (ret == -1) { perror("mprotect:"); return -1;...code, sizeof(code)); #endif return 0; } /* C/C++ 中的 hook 函数方式 */ void hook_func(uint8_t* pApi, uint8

    67910

    打开C语言常用内存函数的大门(一) —— memcpy()函数 (内含讲解用法和模拟实现)

    前言 在之前写的文章中,我介绍了几个比较常用的字符串函数strlen、strcmp、strcpy。它们作用的对象只能是形如字符串类型的数据。...C语言的确提供了这种函数,在C语言中被称为内存函数。 下面我将讲解,常用的内存函数之一的memcpy函数。...如果还没有什么感觉的话,没有关系,下面我就带着各位去写代码感受一下memcpy函数的魅力所在 3. memcpy函数的演示 在演示之前,先说明一下,memcpy()作为C语言中的库函数,在使用之前我们得先引用一个头文件...但是我们不能被这种未知的情况所打到,于是乎我们仔细的想了一下,既然数据在内存中是以字节为单位存储的,换句话说字节就是内存中最小的度量单位了,那么我们就明白了,用char*指针能访问一个字节内容的大小。...总结 在本文中,我介绍了memcpy函数的返回值和各个形参的含义、memcpy函数如何使用以及memcpy函数的模拟实现。 希望读者们能够好好学习,学有所成!!!

    1.1K10

    编写高效代码--内存篇

    在近期线上故障排查过程中,我发现代码中仍在使用一些libc库函数,诸如malloc()内存分配、memset()内存清零及htonl()、ntohl()高低字节序转换等,这些函数在性能上存在优化空间。...本节主要介绍在 DPDK&VPP 环境中开发应用程序时的一些关键内存注意事项。 内存拷贝:数据平面切勿使用libc。 虽然libc库中在编译时通常会利用底层硬件的特性,包括Intel的指令集优化。...但是DPDK中 rte_memcpy提供了优化过的内存复制函数,这些函数往往更加针对特定应用场景进行了深度优化。...在数据平面中,应避免使用诸如memcpy()或strcpy()这样的函数。对于小规模结构体的复制,推荐采用更为简单的编译器友好型技术以实现优化。...这样一来,每个核心都能无障碍地访问其私有缓存(含锁)中的空闲对象,仅当缓存填满时,核心才需要将部分空闲对象移回内存池环,或在缓存耗尽时获取更多对象。

    39910

    copy_{to, from}_user()的思考

    如果我们确保用户态传递的指针的正确性,我们完全可以用memcpy()函数替代copy_{to,from}_user()。经过一些试验测试,发现使用memcpy(),程序的运行上并没有问题。...同样,大家也是需要保持怀疑的态度。下面我就抛砖引玉。 抛砖引玉 首先我们看下memcpy()和copy_{to,from}_user()的函数定义。...涉及实践,我还是有点相信实践出真知。从我测试的结果来说,实现结果分成两种情况。 第一种情况的结果是:使用memcpy()测试,没有出现问题,代码正常运行。...现在我们可以解答上一节中遗留的问题。怎样才能继续使用memcpy()?...并且memcpy()函数声明是weak,因此可以重写memcpy()函数(扯得有点远)。再扯一点,为何使用汇编呢?为何不使用lib/string.c文件的memcpy()函数呢?

    84010

    【Android 逆向】函数拦截实例 ( ② 插桩操作 | 保存实际函数入口 6 字节数据 | 在插桩的函数入口写入跳转指令 | 构造拼接桩函数 )

    ; 二、插桩前先保存实际函数入口 6 字节数据 ---- 插桩前先 保存函数的入口 6 字节数据 , 因为之后插桩 , 会使用跳转代码 0xE9,0,0,0,0 覆盖函数入口内存 , 被破坏的实际函数...* 会使用跳转代码 0xE9,0,0,0,0 覆盖函数入口内存 * 该函数最终还是要执行 , 需要拷贝一下 , 供之后实际函数调用使用 */ memcpy(code, pApi, size...函数中的 0 ~ 6 字节位置 */ memcpy(pStub, code, size); 函数插桩的具体细节在之前的 【Android 逆向】函数拦截 ( 修改内存页属性 | x86 架构插桩拦截...| 可写 | 可执行 , * 避免因为内存访问权限问题导致操作失败 * mprotect 函数只能对整个页内存的属性进行修改 * 每个 内存页 大小都是 4KB */ int...ret = mprotect(pBase, 0x1000, PROT_WRITE | PROT_READ | PROT_EXEC); /* 修改内存页属性失败的情况 */ if (ret == -1

    1.1K10

    rdp 协议攻击面与安全性分析

    : 0x04 简要分析此漏洞 漏洞存在模块mstscax.dll,api是CUH::UHLoadBitmapBits CUH::UHGetMemBltBits获取存储的bitmap数据时访问到数组边界造成数据越界...freerdp CVE-2020-11525 同样的bitmap数组越界当 id == maxCells时将会 数组越界并且和msrdp是同一个漏洞 0x06 反向攻击客户端的路径和方式 0x07...漏洞背景 对于rdp图形通道的漏洞,我于7月份的时候向freerdp报告了一枚漏洞,并且freerdp回复了我并分配了cve号 CVE-2020-15103,当时提到的漏洞原因是整数溢出,并且freerdp...分配内存失败,导致失败后将会在gdi_init_primary中进入另一条路径gdi_CreateCompatibleBitmap,而这里将会调用_aligned_malloc以16字节对称来分配内存,...0x09 假如说能获取信息泄露 假如这里通过自制工具可以泄露堆地址,比如从最轻松简单的开始,通过泄露越界内存的地址,这个结构体就在gdi_CreateCompatibleBitmap中调用并分配了将会越界的内存

    1.6K30

    一文详解共享内存-附带QT共享内存Demo实现

    共享内存的通信原理示意图: 当两个进程通过页表将虚拟地址映射到物理地址时,在物理地址中有一块共同的内存区,即共享内存,这块内存可以被两个进程同时看到。...但是,我们要确保一个进程在写的时候不能被读,因此我们使用信号量来实现同步与互斥操作。 3、共享内存的使用流程 看完上面的概念肯定是无法理解的。下面我们举一个例子的流程。...当读取完共享内存后,需要detach将该进程与共享内存分离。否则当其它进程想要访问这块共享内存时,就会attach失败。...当进程对共享内存进程操作时,为防止其它进程也对该内存进行改动从而操作数据不同步的情况,需要将内存进行锁定,也就是lock。...5、实用Demo演示 上图是我自己实现的一个基于QT共享内存实现图片读写的小Demo,左边为写,右边为读。可以在一个进程内通信,也可以再开一个进程两者通过共享内存通信。如下。

    2.5K30

    用Rust实现一个简易的加密库

    实现内容:使用Rust的sha2库,创建一个哈希函数,能够对任意长度的数据进行SHA-256哈希处理,返回一个256位的哈希值。...内存安全:目标:通过Rust的所有权模型和内存安全特性,确保库中的加密操作不会引发内存泄漏或无效的内存访问。...特别地,在处理密钥和敏感数据时,我们将确保这些数据在不再需要时能够安全销毁,以防止它们在内存中长时间保留。...我们将在src/lib.rs中添加一个函数来生成AES密钥:use rand::Rng;​fn generate_key() -> Vec { let mut rng = rand::thread_rng...密钥生成:为AES加密生成安全的随机密钥。通过Rust的内存安全性和强大的并发能力,我们确保了加密操作在内存中是安全且高效的。

    7810

    C语言——字符串操作函数

    一.内容概要 介绍除了字符串函数以外可以适用多种数据类型的函数 memcpy memmove memcmp memset 二. memcpy函数 1.memcpy的功能 memcpy是对数据内存的拷贝...而且size_t的单位是字节 2.memcpy的实现 3.模拟实现memcpy 但如果拷贝的数据与被拷贝的数据在一个内存中时 可能会发现数据的重叠导致拷贝失败 这是我们就要引用新的函数...三. memmove函数 1.memmove函数的功能 2.memmove的实现 如果使用memmove去实施重叠数据则不会出现故障而报错 3.memmove的模拟实现 因为害怕重叠,所以设计函数时要考虑从哪个位置开始进行数据的移动...而通常如果目标位置在拷贝元素位置右边则需从右往左拷贝 其他则反之 这样就完成了memmove的模拟实现 四.其他的功能介绍 1.memcmp (1).memcmp函数的功能 因为这些和字符串的函数差不多这里就不细讲了...,简单实现一下 这里的count单位也是字节 (2).memcmp函数的实现 2.memset (1).memset函数的功能 以我的理解就是改变数据里面的元素 (2).memset函数的实现

    9210

    C语言进阶(十) - 内存函数

    前言 本节了解四个内存相关的函数memcpy、memmove、memcmp、memset。...memcpy()函数只要能够实现源空间与目标空间非完全重叠区域的拷贝进行就可以了。如果源空间与目标空间存在重叠区域那么使用memcpy()可能不能正确完成拷贝,从而无法得到正确的结果。...是强化版的memcpy()函数,解决了源空间与目标空间出现部分重叠时拷贝失败的问题。 原理 考虑了拷贝时的重叠问题。...不关注'\0' 返回一个整数 >0 在两个内存块中不匹配的第一个字节在ptr1中的值低于ptr2中的值 =0 两个内存块的内容相等 内存块中不匹配的第一个字节在ptr1中的值高于ptr2...value作为int传递,但函数使用该值的unsigned char转换填充内存块。 返回指针ptr。

    50510
    领券