Mã hóa và giải mã ứng dụng của tôi (hoặc phải là) một NSString (văn bản được mã hóa/giải mã) với một NSString khác (từ khóa) sử dụng Mã hóa 2562 Bit256-Bit. Khi tôi chạy dự án của mình và chạy phương thức mã hóa, không có gì được mã hóa vào trường văn bản chỉ cần xóa chính nó. Dưới đây là đoạn code tôi có:Mã hóa NSString AES256 trong iOS
-(void)EncryptText {
//Declare Keyword and Text
NSString *plainText = DataBox.text;
NSString *keyword = Keyword.text;
//Convert NSString to NSData
NSData *plainData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
//Encrypt the Data
NSData *encryptedData = [plainData AESEncryptWithPassphrase:keyword];
//Convert the NSData back to NSString
NSString* cypherText = [[NSString alloc] initWithData:encryptedData encoding:NSUTF8StringEncoding];
//Place the encrypted sting inside the Data Box
NSLog(@"Cipher Text: %@", cypherText);
}
Các tập tin tiêu đề có thể được tải về bằng cách nhấn vào liên kết này: ZIP File containing AES Implementation
Tôi đã nói rằng tôi cần phải sử dụng Base-64 mã hóa chuỗi của tôi để có được bất kỳ kết quả . Nếu điều này là đúng, thì làm thế nào để làm điều đó?
Tôi cũng được thông báo rằng mã hóa đã thay đổi trong iOS 5 và ứng dụng của tôi là ứng dụng CHỈ dành cho iOS 5+. Nếu điều này là đúng, thì tôi phải làm gì để làm cho mã hóa này hoạt động trên iOS 5 hoặc nơi tôi có thể tìm thấy một triển khai AES 256-bit khác sẽ hoạt động trên NSString.
Tại sao mã này không tạo ra kết quả?
Cảm ơn Rob! Điều đó rất hữu ích! –
Mã sẽ hiển thị ở đâu: http://robnapier.net/blog/aes-commoncrypto-564? Nó sẽ không đi trong lớp riêng của nó bởi vì không có gì để đi vào không có gì một tiêu đề và thực hiện, do đó, nó sẽ đi vào cùng một tập tin mm mà phương pháp của tôi là trong? –
Tôi thường đặt nó trong một lớp được gọi là 'RNCryptManager', nhưng bạn có thể đặt nó ở bất cứ đâu. Mã này cũng có thể được chuyển đổi một cách trivially thành các hàm thay vì các phương thức lớp. –