第三届中华医学事务年会(CMAC)之智慧医学 数据先行

第三届中华医学事务年会(CMAC)2018年4月9日-11日北京亚洲大酒店召开,本次大会主题:“智慧医学,数据先行”。本次大会规模预计700余人,超过150医学总监参加。

随着医学及医药行业巨变,CMAC(中华医学事务年会)已成为医学事务领域规模最大行业盛会,2017年4月北京,9月上海两场医学事务年会参会规模均创下新的纪录,分别超过700人和400人。2018年大会主题“智慧医学,数据先行”,邀请到谷成明博士和贺李镜博士担任大会主席,将邀请康志清博士、郑以漫博士、王莉博士、毛京梅女士、骆天红博士、孙丽梅女士、张方直博士等多位行业资深领袖级专家担任本届大会执行主席,宗旨:传递中国医学事务最强音,势必推动行业的发展。

本次大会主题:“智慧医学,数据先行”。会议将围绕会议主题:从“RCT到RWE与大数据驱动的客户洞见”,“医学沟通:从证据到价值”,“医学事务的明天:优秀到卓越展开。同时大会设计六个会前专题研讨会。会议内容丰富多彩,引领新思维。诚挚邀请医学事务、市场、销售、政府事务等同仁积极参加。

会议亮点

1、大会主题紧扣时代发展脉搏,

2、大会内容板块设置创新。

3、重量级嘉宾及参会规模创新高。

4、全新改版的“中国医学事务基线调研报告”大会上权威发布。

5、“AI时代医学密码”CMAC大会上将与读者见面。

会议内容丰富多彩,引领新思维。诚挚邀请您莅临参加。【会议详细信息请查看日程】


有意参加请咨询:
http://www.51banhui.com/meet/101421.html
联系人:Amy
QQ:3029718080(同微信)
手机:13515802637(微信号)

更多最新会议信息请登录蟠桃会会议平台
或关注微信公众号:canhuiqu

官方微博:蟠桃会议平台


03-19
### CMAC 算法的实现与应用 #### 1. CMAC 算法概述 CMAC 是一种基于分组密码的消息认证码(Message Authentication Code),全称为 Cipher-based Message Authentication Code。它是一种用于验证数据完整性和真实性的机制,广泛应用于网络安全领域。CMAC 使用对称密钥加密算法来生成固定长度的标签,从而确保消息未被篡改或伪造[^1]。 #### 2. CMAC 算法的工作原理 CMAC 的核心思想是对输入消息进行分块处理,并利用分组密码(如 AES)对其进行迭代加密操作。最终输出一个固定大小的 MAC 值作为消息的身份标识。以下是其主要步骤: - 将消息分割成固定大小的数据块。 - 对最后一个不完整的数据块进行填充。 - 利用子密钥对每个数据块依次加密并更新状态。 - 输出最终的状态值作为 MAC 标签。 这种设计使得 CMAC 能够抵抗各种攻击形式,例如重放攻击和中间人攻击。 #### 3. Python 中的 CMAC 实现 Python 提供了丰富的库支持 CMAC 的开发,其中 `cryptography` 和 `pycryptodome` 是两个常用的工具包。下面是一个简单的 AES-CMAC 实现示例: ```python from cryptography.hazmat.primitives.ciphers.aead import AESCCM import hmac import hashlib def generate_cmac(key, message): block_size = 16 # AES block size is typically 16 bytes subkey1 = bytearray(block_size) subkey2 = bytearray(block_size) cipher_key = key[:block_size] # Generate the first and second subkeys using HMAC-SHA-256 hash_func = lambda data: hmac.new(cipher_key, data, hashlib.sha256).digest() l_value = hash_func(bytearray([0] * block_size)) for i in range(16): subkey1[i] = (l_value[i] << 1) | (l_value[(i + 1) % 16] >> 7) if i == 15: subkey1[i] ^= 0x87 if (subkey1[0] & 0x80) != 0 else 0 subkey2 = [(byte ^ 0x01) for byte in subkey1] padded_message = message last_block_length = len(padded_message) % block_size if last_block_length > 0: padding_bytes = block_size - last_block_length pad_byte = chr(padding_bytes).encode('utf-8') padded_message += pad_byte * padding_bytes mac_state = b'\x00' * block_size blocks = [padded_message[i:i+block_size] for i in range(0, len(padded_message), block_size)] for index, block in enumerate(blocks[:-1]): xor_result = bytes(a ^ b for a, b in zip(mac_state, block)) mac_state = hash_func(xor_result)[:block_size] final_block = bytes(a ^ b for a, b in zip(blocks[-1], subkey2)) mac_state = hash_func(final_block)[:block_size] return mac_state.hex() # Example usage if __name__ == "__main__": secret_key = b'sixteen byte key' input_data = b'This is a test message.' cmac_tag = generate_cmac(secret_key, input_data) print(f"Generated CMAC Tag: {cmac_tag}") ``` 上述代码展示了如何手动计算 AES-CMAC 标签的过程,包括子密钥生成、消息填充以及逐块加密等环节。 #### 4. CMAC 在实际中的应用场景 ##### (1)消息认证 在现代通信协议中,CMAC 可以用来验证接收到的信息是否来自可信源并且没有被修改过。例如,在汽车电子控制单元(ECU)之间交换敏感指令时,可以通过 CMAC 来确认请求的有效性[^4]。 ##### (2)并发验证 当多个客户端同时向服务器提交请求时,可以借助 CMAC 进行快速校验而无需额外消耗大量资源。这种方法特别适合于高吞吐量的服务端架构下实施安全性保障措施[^3]。 ##### (3)统一框架构建 为了简化不同类型加解密方法之间的切换成本,开发者通常会选择创建一套通用接口封装所有可能使用的方案——其中包括但不限于HMAC、GMAC以及当前讨论的重点即为AES-CMAC等等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值