iOS上

2017-07-04 25 views
1

解碼的base64數據I有一個base64字符串,我可以通過打破串入每行16個字節(字符),然後使用OpenSSL解碼在MacOS解碼:iOS上

樣品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== 

解碼命令:

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

這裏是RAW base64編碼串:

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

在data.bin的數據加密PKI,我可以將其解密iOS上就好了。如果我cat data.bin我看到(只顯示前幾個字符)加密數據:

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

然而,在iOS上,如果我嘗試:

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

然後數據總是nil

+1

什麼 「PKI加密」 意味着什麼?我的問題中沒有看到任何加密代碼。有這樣的一些編碼的東西。此外,*「我可以解密在iOS上就好了」 *直接違揹你的標題 –

+0

PKI意味着RSA加密。我沒有提到它,因爲它不會導致我只有base64編碼出現問題。在我的例子上面,我可以使用OpenSSL,但_not_編程方式使用'initWithBase64EncodedString'解碼的base64字符串。 –

+0

'text'' nil'?如果將字符串從「text」中排除出去會發生什麼? – thelaws

回答

1

注:Base64編碼解碼輸出爲一個字符串,它是二進制數據。你得到零返回,因爲它不是一個UTF-8字符串和任意的數據一般是無效的UTF-8。

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

輸出:

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>