2017-07-04 13 views
1

Ich habe eine Base64-Zeichenfolge, die ich auf macOS durch Brechen der Zeichenfolge in 16 Bytes (Zeichen) pro Zeile dekodieren kann dann OpenSSL zu dekodieren:Decode Base64 Daten über IOS

Probe data.enc:

RwSBFR7iQ5vQYLqZ 
E60hJEyOaU4VVGcq 
tvnB2A1zQEylNdN9 
tTZIOfwGMwDbMZln 
nvT7lm80L1MkvDNH 
qivdRAV4Ymtizw3F 
d3GWBZ+xFVIAk0H3 
lQWzAr43G7TRCYfc 
r5Ijuj0qGIEF1FLp 
Y6tlYNMI0C3J6UXH 
qnd3vu4XuwIHi1gV 
ciOxuP+iqgjvjM3O 
qy8sU0YITC3ywxPA 
Sh14azvcPu9F1/KY 
S1J1JzN3XsTzscHf 
kdry0hbz5H0l+6Um 
Uz9Sb9HTGxxx9mwF 
B821I8DfZc2RGx8W 
mFuaNzgLFhS6CdwF 
G9yALPk4wBUqIxEA 
y4w/oLPosQqZ7Z9L 
JnQ4SA== 

Decode Befehl:

openssl enc -d -base64 -in data.enc -out data.bin

Hier ist die RAW-base64-codierte Zeichenfolge:

R3LSQUyakgQKXoxCqw/v/o2LwPPthWSOgoyCKV/p60WE7tIVLTIf0mGiSGhXwK91cXYygsCoXyTEdMY4bquMhhV09R2DXVVD79IXBp+7mGSdTcYh4FUvZCMUmWCqjje2PiZUXIzfDgwrJcxKplNrX6T/oc70quz/X4rZv1Qu6BMDBzF/otsC0Q1qx3QzUobxsRaUaCltb1CSdExTZ3zWR8anuz5eaBct3ymM8XNA8zYv6CB44/P+yS6CqGOza/a5R5x04A06Un0hu+d+hsSxW2F9zdeODz3t7cPVZYiW9nyC9XzIXH01Oi25uHuC0otxLlfXU4adMHB4Lj6YrA3Uxg== 

Die Daten in data.bin sind PKI-verschlüsselt und ich kann es auf iOS einfach entschlüsseln. Wenn ich cat data.bin Ich sehe die verschlüsselten Daten (nur die ersten Zeichen angezeigt):

Gr?AL?? ^?B????????d????)_??E???-2?a?HhW??uqv2???

jedoch auf iOS, wenn ich versuche:

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"enc"]; 
NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; 
NSData *data = [[NSData alloc] initWithBase64EncodedString:text options:0]; 

Dann Daten immer nil.

+1

Was bedeutet "PKI verschlüsselt" bedeuten? Ich sehe in Ihrer Frage keinen Verschlüsselungscode. Es gibt so etwas Kodierungskram. Auch, * "Ich kann es auf iOS ganz einfach entschlüsseln" * widerspricht direkt Ihrem Titel –

+0

PKI bedeutet RSA-Verschlüsselung. Ich habe es nicht viel erwähnt, weil es mir keine Probleme bereitet, nur die base64-Codierung ist. In meinem obigen Beispiel kann ich die Base64-Zeichenkette mit OpenSSL dekodieren, aber _not_ nicht programmatisch mit 'initWithBase64EncodedString'. –

+0

Ist 'text'' nil'? Was passiert, wenn Sie die Zeilenumbrüche aus dem "Text" herausstreichen? – thelaws

Antwort

1

Hinweis: Der decodierte Base64-Ausgang ist nicht ein String, es ist Binärdaten. Sie erhalten keine Rückgabe, da es sich nicht um eine UTF-8-Zeichenfolge handelt und beliebige Daten im Allgemeinen nicht UTF-8 sind.

NSString *base64 = @"RwSBFR7iQ5vQYLqZE60hJEyOaU4VVGcqtvnB2A1zQEylNdN9tTZIOfwGMwDbMZlnnvT7lm80L1MkvDNHqivdRAV4Ymtizw3Fd3GWBZ+xFVIAk0H3lQWzAr43G7TRCYfcr5Ijuj0qGIEF1FLpY6tlYNMI0C3J6UXHqnd3vu4XuwIHi1gVciOxuP+iqgjvjM3Oqy8sU0YITC3ywxPASh14azvcPu9F1/KYS1J1JzN3XsTzscHfkdry0hbz5H0l+6UmUz9Sb9HTGxxx9mwFB821I8DfZc2RGx8WmFuaNzgLFhS6CdwFG9yALPk4wBUqIxEAy4w/oLPosQqZ7Z9LJnQ4SA=="; 
NSLog(@"base64: %@", base64); 
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64 options:nil]; 
NSLog(@"data: %@", data); 

Ausgang:

base64: RwSBFR7iQ5vQYLqZE60hJEyOaU4VVGcqtvnB2A1zQEylNdN9tTZIOfwGMwDbMZlnnvT7lm80L1MkvDNHqivdRAV4Ymtizw3Fd3GWBZ+xFVIAk0H3lQWzAr43G7TRCYfcr5Ijuj0qGIEF1FLpY6tlYNMI0C3J6UXHqnd3vu4XuwIHi1gVciOxuP+iqgjvjM3Oqy8sU0YITC3ywxPASh14azvcPu9F1/KYS1J1JzN3XsTzscHfkdry0hbz5H0l+6UmUz9Sb9HTGxxx9mwFB821I8DfZc2RGx8WmFuaNzgLFhS6CdwFG9yALPk4wBUqIxEAy4w/oLPosQqZ7Z9LJnQ4SA== 

data: <47048115 1ee2439b d060ba99 13ad2124 4c8e694e 1554672a b6f9c1d8 0d73404c a535d37d b5364839 fc063300 db319967 9ef4fb96 6f342f53 24bc3347 aa2bdd44 0578626b 62cf0dc5 77719605 9fb11552 009341f7 9505b302 be371bb4 d10987dc af9223ba 3d2a1881 05d452e9 63ab6560 d308d02d c9e945c7 aa7777be ee17bb02 078b5815 7223b1b8 ffa2aa08 ef8ccdce ab2f2c53 46084c2d f2c313c0 4a1d786b 3bdc3eef 45d7f298 4b527527 33775ec4 f3b1c1df 91daf2d2 16f3e47d 25fba526 533f526f d1d31b1c 71f66c05 07cdb523 c0df65cd 911b1f16 985b9a37 380b1614 ba09dc05 1bdc802c f938c015 2a231100 cb8c3fa0 b3e8b10a 99ed9f4b 26743848>