自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 UDS 0x29 身份验证服务 Authentication service

本文介绍了0x29诊断服务中的单向认证流程(SubFunction 01和03)。该服务用于客户端身份验证,以访问受限制的ECU数据和服务。单向认证流程包括:客户端发送证书→服务器验证并生成挑战值→客户端计算所有权证明(对挑战值签名)→服务器验证后授权访问。文中提供了具体报文示例,展示了证书验证(69 01响应)和所有权证明(29 03请求)的通信过程,以及相关参数说明。该认证机制可防止未经授权的数据访问,确保车辆信息安全。

2025-07-27 22:41:27 859

原创 证书——为公钥加上数字签名

对于认证机构的公钥,可以由其他的认证机构施加数字签名,从而对认证机构的公钥进行验证,即生成一张。如果连根CA的公钥都不合法的话,那么就无法验证证书了,因此我们假设Alice所持有的县政府认证机构的公钥是合法的。再接下来,Alice取得村委会认证机构的公钥证书,这个证书上面带有乡政府认证机构的数字签名。接下来,Alice取得乡政府认证机构的公钥证书,这个证书上面带有县政府认证机构的数字签名。下图展示了Alice向Bob发送密文的场景,在生成密文时所使用的Bob的公钥是通过认证机构获取的。

2025-07-13 17:57:03 950

原创 数字签名(digital signature)——消息到底是谁写的

消息认证码(MAC)因发送方和接收方共享密钥而无法防止否认,因为双方都能生成有效MAC。数字签名通过使用非对称密钥解决了这一问题:发送方用私钥生成签名,接收方用公钥验证。签名过程包括计算消息哈希值并用私钥加密,验证时用公钥解密并比对哈希值。为确保公钥合法性,可通过数字签名创建公钥证书。

2025-07-13 15:07:23 465

原创 消息认证码(message authentication code)MAC

消息认证码(MAC)是一种用于验证消息完整性和真实性的技术,通过共享密钥生成固定长度的MAC值来确认消息未被篡改且来自合法发送者。

2025-07-12 17:35:54 1303

原创 针对公钥密码的一种有效攻击——中间人攻击(man-in-the-middle attack)

**摘要:**中间人攻击是指攻击者Mallory伪装成通信双方进行窃听或篡改。例如,Alice向Bob索取公钥时,Mallory拦截Bob的公钥并替换为自己的公钥发给Alice。Alice用Mallory的公钥加密信息后被Mallory解密并篡改,再用Bob的公钥加密后发给Bob。公钥密码虽未被破解,但机密性被破坏。仅靠公钥密码无法防御中间人攻击,需通过认证(如公钥证书)确认公钥的真实性。(150字)

2025-06-02 13:57:44 485

原创 信息安全之什么是公钥密码

公钥密码采用非对称加密机制,加密密钥(公钥)与解密密钥(私钥)成对出现且不同。发送方用公钥加密,接收方用私钥解密。公钥可公开分发,私钥必须严格保密。这种设计从根本上解决了密钥配送问题,因为只需传递公钥而无需传输私钥。密钥对之间存在数学关联性,由公钥加密的内容必须用对应私钥才能解密,确保了通信安全性。(149字)

2025-05-31 22:25:28 353

原创 信息安全之为什么引入公钥密码

对称密码存在密钥配送问题,即加密和解密使用相同密钥,但安全传输密钥存在矛盾。例如,Alice想用对称密码给Bob发送加密邮件,但若将密钥随密文一起发送,窃听者Eve可能同时获取两者从而解密。因此,密钥必须发送却又不能直接发送,这就是密钥配送问题的核心。为解决这一难题,公钥密码技术应运而生。

2025-05-31 21:43:47 325

原创 在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置

在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置如下图所示。则只能够用0x14服务清楚所有DTC。

2025-05-09 20:38:12 353

原创 作为主动唤醒的节点,ECU上电如何请求通讯

作为主动唤醒的节点,ECU上电请求通讯的流程

2025-05-06 19:03:17 393

原创 Dem_SetEventAvailable函数在Dem中的作用

在AUTOSAR规范中可以看到对。

2025-03-16 15:31:44 202

原创 Can时间同步Slave节点中的配置参数CanTSynRxCrcValidated

在配置CAN时间同步的Slave节点的时候,如果不希望对Master端发过来的SYNC报文和Follow Up中的报文进行CRC校验时,可以将下图中的配置参数。

2025-03-12 20:01:05 296

原创 SWC中的显式读写(DataReceiveByValue/DataSendPoint)

在AUTOSAR中,显式读写所用的。

2025-03-11 20:57:18 325

原创 SWC中的隐式读写(DataReadAccess/DataWriteAccess)

这个Runnable 执行后更新一下对应的buffer。如果一个SR Interface上的数据配置的是。如果一个SR Interface上的数据配置的是。在AUTOSAR中,隐式读写所用的。隐式读写的特点如下图所示,代码分析可以看到,**会在。执行前先把这个数据通过。读到这个buffer中。代码分析可以看到,在。

2025-03-10 21:06:38 282

原创 在AUTOSAR 22-11版本中的诊断服务处理函数

下表中描述了在 AUTOSAR 22-11 中规定的一些。可以方便我们进行功能调试。

2025-02-26 20:09:21 239

原创 git merge -s ours ...的使用方法

git的一个好用的操作 git merge -s ours develop/zhufenzhi_name

2025-02-26 19:49:20 484

原创 AUTOSAR工程师能不能被AI取代,看看Deepseek的回答

作为AUTOSAR(Automotive Open System Architecture)开发工程师,虽然AI技术在某些领域可能带来自动化和效率提升,但完全被AI取代的风险目前仍然较低。

2025-02-15 16:09:46 632

原创 在AUTOSAR 22-11版本中Dem操作循环(Operation Cycle)的开启和关闭

在AUTOSAR 22-11版本中,Dem模块中的操作循环使用方法

2025-02-10 21:57:47 612

原创 AUTOSAR 4.2.2版本中Dem 操作循环(Operation Cycle)的开启和关闭

在AUTOSAR 4.2.2版本的Dem模块中,是通过Dem_SetOperationCycleState这个接口对整个故障诊断的操作循环(OperationCycle)进行开启和关闭的

2025-02-10 21:22:16 598

原创 如何在RTACAR中配置IP多播(IP Multicast)

基于AUTOSAR的汽车软件架构,如何在RTACAR中配置IP多播(IP Multicast)

2025-02-08 15:38:08 632

原创 AUTOSAR TCP中的MSS和MTU的关系

最大的段大小。

2024-12-17 19:23:32 478

原创 Python 中使用 open() 报错 UnicodeDecodeError: ‘charmap‘ codec can‘t decode byte 0x9d in position 3054030

Python 中使用 open() 报错 UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 3054030

2023-11-17 15:43:48 634

原创 Trace32 部分命令

Trace32部分命令

2023-09-03 12:27:26 1190

原创 ((*(volatile unsigned long *) (reg)))

(*(volatile unsigned long *) 详解

2023-08-15 15:40:38 371

原创 NvM学习笔记(一)以TC387为例,分析为什么要使用Flash 模拟 EEPROM ?

为了降本增效,工程师们就想出了一个结合EEPROM和Flash优点的存储方法,采用uc内部的DFLASH 模拟EEPROM,来存储ECU下电时需要保存到非易失性存储器中的数据,在AUTOSAR软件架构中,存储协议栈可以实现这部分功能。

2023-06-05 23:03:20 3778

原创 Dem和NvM(NVRAM Manager)的交集

Dem 和NvM的交集

2023-02-19 12:15:27 3722

原创 python脚本中有parser.add_argument语句时的运行方法

python脚本中有parser.add_argument语句时的运行方法parser.add_argument('--ProjectPath', type=str,help='Path of the project.', required=True) # 指定程序需要接受的命令参数args = parser.parse_args() # 通过 parse_args() 方法解析参数proj

2021-09-09 09:53:29 1445

原创 Windows 系统中导入 from Crypto.Cipher import AES 报错之解决方案,亲测有效

Windows 系统中导入 from Crypto.Cipher import AES 报错之解决方案,亲测有效。1.安装cryptopip install crypto2.Windows系统上安装 pycryptodomepip install pycryptodome3. 在该目录C:\Users…\Python\Python38\Lib\site-packages下找到这两个文件夹,并将目录名中的小写c改为大写C即可。此时便不会报错...

2021-09-07 10:18:12 1249

原创 用matlab绘制线性分段函数图像

假设线性分段函数如下所示在matlab中建立m文件:输入以下代码:x = 0:0.01:5;y = zeros(size(x));for i = 1:length(x) if x(i)<0.9 y(i) = 0; elseif x(i)>=0.9 && x(i)< 4.34 y(i) =29.0698.*x(i)-26.1628; else y(i) = 100; end end

2021-03-11 16:30:13 4045 1

原创 在matlab中用代码绘制模糊控制器里面的隶属度函数

a=readfis(‘模糊系统名称’);plotmf(a,‘input’,1) 绘制输入到模糊系统的第一个变量的隶属度函数plotmf(a,‘input’,2) 绘制输入到模糊系统的第二个变量的隶属度函数plotmf(a,‘output’,1) 绘制输入到模糊系统输出的第一变量的隶属度函数gensurf(a)绘制模糊系统输入和输出的三维mapp图。再在Figure编辑器中对图片的属性进行设置,出图。.

2021-03-11 09:24:13 6829 1

原创 实现将已知字符串s中的前导空白字符和尾随的空白字符去掉,并将字符串字符之间的连续多个空白字符缩减为一个空白符

编制一个字符串处理程序,实现将已知字符串s中的前导空白字符和尾随的空白字符去掉,并将字符串字符之间的连续多个空白字符缩减为一个空白符。算法分析:首先用一个跳过空白符的循环,去掉字符串s中的前导空白字符;然后顺序访问字符串s的其余字符,对每个顺序访问的当前字符,检查该字符是否为空白字符,若是,用一个循环跳过后随的多余空白字符,直至字符串s访问结束;最后要考虑的是压缩过程结束时,若其最后一个复制字符若为空白字符,则要把该空白字符改成字符串结束符。#include<stdio.h>#inc

2021-03-05 17:25:10 1746 1

原创 在一个字符串的任意位置上插入一个字符

在一个字符串的任意位置上插入一个字符**要求:**插入字符的位置由用户从键盘输入。分析:首先提醒用户输入一段字符串;输入要添加的字符;输入要添加的位置(第几个字符的后面);将添加后的数组向后移动一位,其余不变。源程序一(不用指针):从strlen(s)开始,position结束,将最后一位向后移动,将倒数第二位移动到最后一位,直到position这个位置,从后面开始移动不会影响到数组内容,如果是从前面开始,则会对后面的数组进行覆盖,会对结果造成影响。#include<stdio.h

2021-03-04 18:10:41 6694 3

原创 统计输入的一个字符串中每个数字出现的次数

统计输入的一个字符串中每个数字出现的次数要求:用一个二维数组分别记录数字和数字出现的次数。源程序:#include<stdio.h>#include<string.h>main(){ char str[100]; int digital_num[2][10] = { {0,1,2,3,4,5,6,7,8,9},{0,0,0,0,0,0,0,0,0,0} }; /*第一行记录出现的数字,第二行记录该数字出现的次数*/ int i, j; printf("Inpu

2021-03-04 15:23:23 4718 2

原创 将十进制转换为二进制

问题:将任一十进制整数转换为二进制形式。方法一分析:将十进制转换为二进制的方法很多,本方法利用C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制形式存储的,所以没有必要再将一个整数经过一系列运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。源程序:#include<stdio.h>void printb(int,int);void main(){ int x; printf("Input number:"); scanf("%d",&am

2021-03-02 15:23:41 646

原创 将一个字符串逆序输出

将输入的一个字符串逆序输出。例如,输入abcde,则输出edcba。用普通函数和递归函数实现。普通函数源程序:#include<stdio.h>#include<string.h>int main( ) /*该函数调用后返回的结果为int型,如果没有返回值,此时返回值类型为void*/{ int i; char str[100]; /*数组在定义时必须指明长度,以便C编译程序根据此处信息确定出数组分配存储空间的大小*/ gets(str); /*从键

2021-03-02 11:44:24 23865 7

原创 指向由5个元素组成的一维数组的指针变量

下面程序的输出结果为2和5。#include <stdio.h>int main(){ int intArray[] = {1, 2, 3, 4, 5}; int *p = (int *)(&intArray+1); printf("%d,%d",*(intArray+1),*(p-1)); return 0; }程序说明:intArray[ ]是一个长度为5的整型数组;主要是要理解这句话:int *p = (int *)(&intArray+1

2021-02-20 22:03:24 1367

原创 (十一)指针数组

因为指针也是一种数据类型,所以相同类型的指针变量就可以构成数组指针,在指针数组中每一个元素都是一个指针变量,并且指向同一数据类型。指针数组的定义形式为:*数据类型 数组名{整型常量表达式};例如:char *a[3]={“abc”,“bcde”,“fg”};由于[ ]比*优先级高,所以首先是数组形式,然后才是与*的结合。因此指针数组a含3个指针a[0]、a[1]、a[2],分别为这三个字符串的起始地址。指针数组适合用于存储若干个字符串的地址,使字符串处理更加方便灵活。与普通数组的规定一样,指

2021-02-19 00:09:27 441

原创 (十)指针与字符串

1. 字符串可以用字符数组来表示,也可以用指针来处理指向字符串首地址的指针变量称做字符串指针,它实际上是字符类型的指针。其定义的一般形式为*char 变量名;利用一个字符串指针访问字符串通常可以采用以下两种方式:**(1)将一个字符数组的起始地址赋值指针变量。**例如:char *p;char s[]=“abc”;p=s;字符串“abc”存储在字符数组s中,数组s的起始地址赋值给指针变量p,则指针p就指向字符串“abc”。**(2)将一个字符串常量赋值给指针变量。**例如:char

2021-02-18 23:27:30 3646 1

原创 (九)指向一维数组和二维数组的指针(数组指针)

所谓数组的指针,即指数组的起始地址,数组元素的指针是指数组元素的地址。1.一维数组的地址在C语言中,数组名是个不占内存的地址常量,它代表整个数组的存储首地址。一维数组元素a[i]的地址可以写成表达式&a[i]或a+i,&a[i]是用下标形式表示的地址,a+i是用指针形式表示的地址,二者结果相同。元素a[i]的地址等于数组首地址向后偏移若干字节,偏移的字节数等于a[i]与首地址之间间隔元素的数目乘以一个元素所占存储单元的字节数。那么,*(a+i)表示a+i地址中的内容,就是a[i]的值

2021-02-18 22:05:20 8332 1

原创 (八)指针运算

指针只能用地址表达式表示,不能像普通整数那样对指针进行任意的运算。除单目的&和*运算外,指针所允许的运算还包括有限的算术运算和关系运算。1.算术运算指针的算术运算包括:指针加、减一个整数和两个指针相减运算及++、–运算。(1)指针与整数的加减运算。指针变量加上或减去一个整数n,是将指针由当前位置向前或向后移动n个数据的位置。通常这种运算用于将指针指向一个数组中的其他位置。对于指向一般数据的指针变量,加减运算操作的作用并不大。由于各种类型的数据的存储长度不同,因此在数组中加减运算使指针移动n

2021-02-18 19:43:15 2296

原创 (七)字符与字符串的输入/输出函数

一、字符输入/输出函数1.putchar()函数putchar()函数是C语言提供的标准字符输出函数,其作用是在显示显示器上输出给定的一个字符常量或字符变量,与printf( )函数中的%c相当。putchar( )必须有一个输出项,输出项可以是字符型常量(包括控制字符和转义字符)、字符型变量、整型变量、整型常量、表达式,但只能是单个字符而不能是字符串。例如:putchar(‘A’) /输出字母A/putchar(65)

2021-02-17 20:47:46 3585

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除