Iphone 在Objective-C中从iDynamo阅读器读取加密数据

Iphone 在Objective-C中从iDynamo阅读器读取加密数据,iphone,objective-c,ios,encryption,Iphone,Objective C,Ios,Encryption,你知道有谁有这方面的经验吗?此读卡器正在使用DES-CBC加密卡数据。有人知道如何解密这些数据吗 非常感谢您抽出时间。如果这太晚了,很抱歉,但可能会对其他人有所帮助。因此,解决方案是联系Magtek。如果您购买Magtek设备,请向他们索取lib。我从Magtek得到了libDS247.a。然后将DS247.h导入到代码中,实现DS247委托。我在此为您提供一个样本- (void)deviceDidConnect { if (theAlertView.visible) [theA

你知道有谁有这方面的经验吗?此读卡器正在使用
DES-CBC
加密卡数据。有人知道如何解密这些数据吗


非常感谢您抽出时间。

如果这太晚了,很抱歉,但可能会对其他人有所帮助。因此,解决方案是联系Magtek。如果您购买Magtek设备,请向他们索取lib。我从Magtek得到了libDS247.a。然后将DS247.h导入到代码中,实现DS247委托。我在此为您提供一个样本-

(void)deviceDidConnect
{   
if (theAlertView.visible) 
    [theAlertView dismissWithClickedButtonIndex:0 animated:NO]; 
}

- (void)deviceDidDisconnect
{
theAlertView = [[UIAlertView alloc] initWithTitle:@"Hardware Not Connected!"
                                                 message:@"Please connect the device."
                                             delegate:self 
                                cancelButtonTitle:nil otherButtonTitles:nil];
[theAlertView show];    
[theAlertView release];
}

- (void)magneticCardReadStart
{
read = YES;
[self.tableView reloadData];
}

- (void)magneticCardReadDidFinish:(NSString *)cardString
{
read = NO;

if (trackMode == 67)
{
    NSString *string = [cardString substringWithRange:NSMakeRange(6,20)];
    self.pan1 = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(7+pan1.length,27)];
    self.name = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(8+pan1.length+name.length,4)];
    self.ed1 = string;

    self.ed2 = @"";
    self.pan2 = @"";        
}
if (trackMode == 68)
{
    NSString *string = [cardString substringWithRange:NSMakeRange(5,20)];
    self.pan2 = [[string componentsSeparatedByString:@"="] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(6+pan2.length,4)];
    self.ed2 = string;

    self.ed1 = @"";
    self.name = @"";
    self.pan1 = @"";

}
if (trackMode == 69 || trackMode == 70)
{
    NSString *string = [cardString substringWithRange:NSMakeRange(7,20)];
    self.pan1 = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(8+pan1.length,27)];
    self.name = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(9+pan1.length+name.length,4)];
    self.ed1 = string;

    string = [cardString substringWithRange:NSMakeRange(83,20)];
    self.pan2 = [[string componentsSeparatedByString:@"="] objectAtIndex:0];

    string = [cardString substringWithRange:NSMakeRange(84+pan2.length,4)];
    self.ed2 = string;      
}
if (trackMode == 71)
{
    self.ed1 = @"";
    self.ed2 = @"";
    self.pan1 = @"";
    self.pan2 = @"";
    self.name = @"";        
}

[self.tableView reloadData];
}

默认情况下,应将trackMode设置为67,并且cardString是原始卡数据

检查此链接是否有助于您。谢谢