1回のエンコード問題のデバッグ履歴
3399 ワード
背景紹介
イニシアチブ
暗号化端子
復号端子
に質問
ソリューション
ファイルを保存する前に、NSDataをbase 64文字列に変換して保存すると、このような問題は発生しません.もちろん、復号プロセスにはbase 64復号が追加されます.
サンプルコード
- (void)encodeProcess {
NSString *path = [[NSBundle mainBundle] pathForResource:@"patch-raw" ofType:@"js"];
NSLog(@"path: %@", path);
NSString *rawString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"rawString: %@", rawString);
NSData *rawData = [rawString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"rawData: %@", rawData);
NSData *encryptData = [rawData AES128EncryptWithKey:encodeKey gIv:ivKey];
NSLog(@"encryptData: %@", encryptData);
NSString* base64String = [encryptData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSLog(@"base64String: %@", base64String);
NSString *md5 = [base64String MD5String];
NSLog(@"md5: %@", md5);
}
- (void)decodeProcess {
NSString *path = [[NSBundle mainBundle] pathForResource:@"patch" ofType:@"js"];
NSLog(@"path: %@", path);
NSString *base64String = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"base64String: %@", base64String);
NSString *md5 = [base64String MD5String];
NSLog(@"md5: %@", md5);
NSData *encryptData = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSLog(@"encryptData: %@", encryptData);
NSData *decodeData = [encryptData AES128DecryptWithKey:encodeKey gIv:ivKey];
NSLog(@"decodeData: %@", decodeData);
NSString *rawString = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
NSLog(@"rawString: %@", rawString);
}
patch-raw.js
defineClass('PolicyCell',{loadData_policeType:function(data,type){self.ORIGloadData_policeType(data,type);self.lbGroup().removeFromSuperview();}}, {})
patch.js
823SE2VxM7H65r9synXs+IWwZA5CY8oFoG3YM5OPn6D+vr5ZWOvUTb7Rb63/HyHs
lNh1Ugd+ZK3kQTIrvDZfyHH+ht+CGcQYWCxYmlcp5M9slsvGEC+haiL4ttpjT/cd
Kx+eh2EUi9MgaBZsz7yC0yQhGXb6M7FFTA4lzba7uPi1M5qTXpLMYsLGqkxFN5EW
kUV7N4F9qQcXqSSyhloS8A==
md5
base 64文字をファイルにコピーするときにスペースなどの非表示文字を付ける可能性があるため、前後の2つのmd 5は一致しません.しかし、実際の機能には影響しません.