使用Nexus 4和最新的Android API级别18与Mifare DESFire EV1 AES标签进行通信让我头疼.遵循NXP本机协议以编写和读取此类型的标记,必须遵循以下步骤:
为此,我使用Android的IsoDep类,它提供对ISO 14443-4属性和I/O操作的访问.关于它的一个非常奇怪的事情是,一旦我发送选择应用程序本机命令,我得到一个意外的响应.想象一下,我有AID F4013D
所以我发送:
-> 5AF4013D
<- 6E00
Run Code Online (Sandbox Code Playgroud)
所有可能的响应必须是一个字节长度(成功0x00
或error_code),而不是两个或更多.因此,0x6E
在成功响应之前是绝对意外的.它并不总是发生,当它没有并且工作正常时,选择的应用程序和身份验证过程可以正常工作.但是,一旦经过身份验证,写入命令就没有正确的行为,所有写入命令都会0xAF
从PICC 完成,而不是成功0x00
.似乎PICC不应该期待一些额外的数据(我发送正确长度的有效载荷).如果我发送任何其他命令,我会得到一个0xCA
(命令中止)错误代码.
-> 5AF4013D
<- 00 /*Success*/
-> AA01
<- AFA8394ED57A5E83106B4EE72FD2BB0CC4
-> AF148F525E1DDE0AD6AB60B4B615552475C91F2E8D89B8523E4465113DD5BD19C6
<- 0066D255C93F2F492AFE3715C88964F1BD /*Authentication success*/
-> 3D02000000030000222222 /*Write 3 bytes to file nº2*/
<- AF /*Unexpected, 0x00 was expected*/
Run Code Online (Sandbox Code Playgroud)
正常情况下,如果我使用个人阅读器(非Android NFC)发送这些类型的命令,它总能正常工作.似乎Android NFC API中的某些内容很奇怪,它应该只是一个从不解释或修改数据的原始数据传输器.
我也尝试过使用ISO 7816-4 APDU结构,结果相同.作为一个好奇心,Galaxy Nexus不会发生选择应用程序奇怪的响应,但是一直是写命令.
我有一个简单的iOS应用程序,有4个Viewcontrollers和很少的资源.资源包括视频(30mb)和图像(10mb).我期待一个应用程序大小最大.50MB但是当我存档时它高达107MB.
我已经读过,当我使用Swift库或pods时,Xcode将Swift核心包含到我的应用程序中.我现在的问题是我该怎么办?107MB是不可接受的.即使50MB也很大,但我很好.有没有办法减小尺寸并保持包含Swift吊舱?在这个阶段我甚至无法上传它.
UPDATE
感谢@GoRoS我已经检查过并发现libswiftCore.dylib 43MB&libswiftFoundation.dylib 5MB是真正增加大小的文件.还是很奇怪.我的IPA中有两个不同位置的Swift库.
在运行Android 4.1.2的Samsung Tab 3上,多个副本到剪贴板会生成一个包含每个副本的剪贴板.通过上滑键盘底部的按钮可以看到这一点.
我想以编程方式删除所有这些副本,但是,ClipboardManager似乎没有提供执行此操作的方法.如何删除已复制到剪贴板的所有内容?
谢谢,
克里斯
在kotlin中重写下面的代码会有什么更优雅的方法.
if (xList.isEmpty()) {
throw SomeException("xList was empty")
}
Run Code Online (Sandbox Code Playgroud)
我们有一个throwif运算符吗?
我在Objective C中使用简单的AES 128而疯狂,并且无法在简单的测试中获得预期的加密文本.谁能告诉我我做错了什么?
测试:
- (void)testAES128_1
{
NSString *testVector = @"6bc1bee22e409f96e93d7e117393172a";
NSString *initVector = @"000102030405060708090A0B0C0D0E0F";
NSString *key = @"2b7e151628aed2a6abf7158809cf4f3c";
NSString *expected = @"7649abac8119b246cee98e9b12e9197d";
NSData *inputData = [self dataFromHexString:testVector];
NSData *keyData = [self dataFromHexString:key];
NSData *expectedData = [self dataFromHexString:expected];
NSData *current = [inputData AES128EncryptWithIV:initVector andKey:key];
// What I get in current = cf2ea38a123be20765eb8c5c56caf224 != expected
BOOL res = [inputData isEqualToData:current];
XCTAssertTrue(res);
}
// For Converting incoming HexString into NSData
- (NSData *)dataFromHexString:(NSString *)string
{
NSMutableData *stringData = [[NSMutableData alloc] init];
unsigned …
Run Code Online (Sandbox Code Playgroud)