2 Stimmen

Lesen verschlüsselter Daten aus iDynamo Reader in Objective-C

Hat jemand Erfahrung mit dem iDynamo-Leser ? Dieser Leser verwendet DES-CBC um Kartendaten zu verschlüsseln. Weiß jemand, wie man diese Daten entschlüsseln kann?

Vielen Dank für Ihre Zeit.

0 Stimmen

Prüfen Sie, ob dieser Link Ihnen helfen kann stackoverflow.com/questions/9152395/ . Danke!

1voto

hiennt Punkte 890

Tut mir leid, wenn es zu spät ist, aber vielleicht hilft es ja jemandem weiter. Die Lösung ist also, Magtek zu kontaktieren. Wenn Sie ein Magtek-Gerät kaufen, fragen Sie sie nach der lib. Ich habe libDS247.a von Magtek erhalten. Dann importieren Sie DS247.h in Ihren Code und implementieren das DS247Delegate. Ich stelle hier ein Beispiel für Sie zur Verfügung -

(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];
}

Der TrackMode sollte standardmäßig auf 67 gesetzt werden, und der cardString sind die Rohdaten der Karte

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X