Hi, This is CarPlay!

本文从开发者视角解读CarPlay,介绍其作为车载信息系统的定义、硬件需求、软件结构、协议与加密机制。重点突出CarPlay的集成过程、协议支持与安全性,为读者揭示CarPlay背后的技术细节。

据说,国外车展上,CarPlay已经成为了地摊货,凡参展的厂商都成为的标配(有同样待遇的还有Google的Android Auto)。但由于我朝特色,至今未能一睹这俩位的真容(其实是水平不行,领导不带着去看车展)。网络上的只言片语多是重复拷贝的内容,没有什么有价值的东西。只是最近从Apple开放的其它协议上,已提供部分CarPlay集成规范,因此,本文从开发者的角度上,介绍下CarPlay到底是个什么东西!

(盗了Apple官网的图)

1. 简介

CarPlay定义了车载信息系统(IVI)如何与运行iOS的设备之间交互数字内容(包括,Video,Audio&Metadata)。这些内容以流(CarPlay无非是流媒体应用的变种罢了)的形式发送到车载系统上,Apple称车载系统为Accessory(其它外设也如此称呼)。CarPlay只允许运行在车辆与仪表盘结合的IVI系统上(想把CarPlay显示到后座的同学可以洗洗睡了),同时,CarPlay要求有声音的输出功能及Microphone输入。

集成CarPlay的车载系统只能在Apple指定的支持CarPlay功能的国家销售(http://www.apple.com/ios/feature-availability/#applecarplayapplecarplay),这里已经有China了,不过现在还拿不到,估计是流程问题。

集成CarPlay还需要大量其他协议的理解,包括:USB 2.0(HID, NCM, OTG),Apple Bonjour Service,TCP/IP,IPv6,NTP,H.264等等。

2. 硬件需求

高清显示屏:至少800*480分辨率,24Bit色深与30Hz的刷新率。

解码能力:支持H.264解码

输入设备:触摸屏,或者至少有选择键与回退键的旋钮

声音设备:Microphone输入与Speaker输出

按键:Siri按键与CarPlay按键

传感器:用于辅助导航定位的传感器

接口:USB Type A型的接口

放手机的位置:可能是Apple怕把手机摔坏了,挺贵的。。。

3. 软件结构

iOS8.3之前的CarPlay使用USB连接,现在增加了Wifi的支持,不过考虑到充电的问题。。。;USB要求使用OTG接口,这是由于物理层连接要求设备做Host,车机做Device,因此必须使用OTG的角色互换协议HNP。设备与车机通信采用USB NCM网络模型,IPv6协议。

CarPlay是一个基于认证的解决方案,因此,车机侧必须集成Apple的认证IC,同时提供认证的通信接口(I2C驱动)。

CarPlay的服务发现基于Apple的Bonjour实现,这部分在Apple的网站上可以下载。

CarPlay协议与Apple的另一个协议iAP2紧密结合,CarPlay会话建立之前,都是标准的iAP2 Host Mode通信。

集成CarPlay,Apple会提供一个叫做CarPlay Communication Plugin的插件,完成了CarPlay协议的封装,没有这个,集成的事可以先放放了;深度合作者(估计是捐了钱的)可以优先拿到这个。

CarPlay的UI画面,是使用H.264压缩,串流到车机侧显示,采用H.264 HP3.1/3.2 Profile,最大码率25Mbps。

CarPlay的Audio比较麻烦,分为俩大类:Main Audio与Alternative Audio。Main Audio包括娱乐系统的Audio,电话的Audio,Siri的Audio等等;Alterative Audio包括一些提示音什么的,这些个Audio之间有一个复杂的管理逻辑,在CarPlay的协议中进行了描述。

另外,CarPlay给车机传输的所有流都是加密的,密钥要与认证IC通信才能算出(这玩意整得跟个机顶盒似的,难道。。。?)

4. 协议

都是基于HTTP文本的定义,估计Apple都给封好了,东西不全,不确定是否有工作量。

CarPlay Certification Guide February 2019 Table of Contents Introduction .................................................................................................... 3 MFi CarPlay Certification Portal ...................................................................... 4 CarPlay Configuration Record ......................................................................... 7 Certification Timeline ...................................................................................... 8 Materials to Submit for CarPlay Certification ................................................... 9 CarPlay integration design documents ..................................................................... 10 Wireless performance and coexistence test plans .................................................... 11 USB signal integrity test results ................................................................................ 12 USB performance test results ................................................................................... 14 Wireless performance test results ............................................................................. 15 Wi-Fi Alliance certification ........................................................................................ 16 Exception requests .................................................................................................... 17 Location functional test results ................................................................................. 19 Location drive test .................................................................................................... 20 Wireless drive test results ......................................................................................... 21 ITU-T telephony audio quality test results ................................................................ 23 Siri audio quality test results ..................................................................................... 24 Accessory Certification Assistant test results and self-certification form ................ 25 Accessory Certification Assistant ....................................................................... 25 Self-certification form ......................................................................................... 25 Functional test results and test benches .................................................................. 26 Functional test results ......................................................................................... 26 Test benches ....................................................................................................... 26 Shipping test benches ........................................................................................ 28 Functional audit .................................................................................................. 28 Resubmitting functional test results and test benches ....................................... 28 Contacting Apple .......................................................................................... 29 USB Signal Integrity Test Labs ...................................................................... 30 Allion Labs, Inc. ................................................................................................... 30 Allion China Inc. .................................................................................................. 30 2019-02-22 | Copyright © 2019 Apple Inc. All Rights Reserved. Page of 1 32Allion Japan Inc. .................................................................................................. 30 Eurofins Digital Testing Belgium N.V. .................................................................. 30 Granite River Labs, Inc. ....................................................................................... 30 Granite River Labs Japan, Ltd. ............................................................................ 30 Granite River Labs Shanghai, Ltd. ....................................................................... 30 Revision History ............................................................................................ 31
### 实验名称 使用 Visual C++ 实现 RC4 加密算法对“Hi,this is RC4!”字符串加密解密 ### 实验目的 通过 Visual C++ 编程实现 RC4 加密算法,对给定的字符串“Hi,this is RC4!”进行加密,并验证解密的正确性,深入理解 RC4 流密码的工作原理实现方式。 ### 实验原理 流密码是一种将数据流与密钥流进行异或操作的加密方式,RC4 密码是流密码的一种重要实现。RC4 密码的核心算法包括初始化算法生成算法。初始化算法用于生成伪随机密钥流,生成算法则用于加密解密数据。加密解密过程均是将明文或密文与密钥流进行异或操作[^1][^3]。 ### 实验环境 - 操作系统:Windows 10 - 开发工具:Visual Studio 2022 ### 实验步骤 1. **初始化 S 盒**:根据密钥对 S 盒进行初始化。 2. **生成密钥流**:通过初始化后的 S 盒生成密钥流。 3. **加密过程**:将明文与密钥流进行异或操作得到密文。 4. **解密过程**:将密文与密钥流进行异或操作得到明文。 ### 代码实现 ```cpp #include <iostream> #include <string> #include <vector> // 初始化 S 盒 void rc4Init(std::vector<int>& S, const std::string& key) { int keyLength = key.length(); for (int i = 0; i < 256; ++i) { S[i] = i; } int j = 0; for (int i = 0; i < 256; ++i) { j = (j + S[i] + key[i % keyLength]) % 256; std::swap(S[i], S[j]); } } // 生成密钥流并加密/解密 std::string rc4Crypt(const std::string& input, const std::string& key) { std::vector<int> S(256); rc4Init(S, key); std::string output = input; int i = 0, j = 0; for (size_t k = 0; k < input.length(); ++k) { i = (i + 1) % 256; j = (j + S[i]) % 256; std::swap(S[i], S[j]); int t = (S[i] + S[j]) % 256; output[k] = input[k] ^ S[t]; } return output; } int main() { std::string plaintext = "Hi,this is RC4!"; std::string key = "SecretKey"; std::string ciphertext = rc4Crypt(plaintext, key); std::string decryptedText = rc4Crypt(ciphertext, key); std::cout << "明文: " << plaintext << std::endl; std::cout << "密钥: " << key << std::endl; std::cout << "密文: "; for (char c : ciphertext) { std::cout << static_cast<int>(static_cast<unsigned char>(c)) << " "; } std::cout << std::endl; std::cout << "解密后的明文: " << decryptedText << std::endl; return 0; } ``` ### 实验结果 运行程序后,输出明文、密钥、加密后的密文以及解密后的明文。验证解密后的明文与原始明文一致,说明加密解密过程正确。 ### 实验总结 通过本次实验,成功使用 Visual C++ 实现了 RC4 加密算法,对“Hi,this is RC4!”字符串进行了加密解密。在实现过程中,深入理解了 RC4 流密码的工作原理实现细节,掌握了如何使用 C++ 语言实现 RC4 加密解密功能。同时,验证了加密解密的正确性,加深了对 RC4 密码在现代加密技术中重要性的认识。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值