Tôi có một ứng dụng iPhone mã hóa một NSString đầu vào bằng cách sử dụng CCCrypt (AES256) và một khóa văn bản thô. Chuỗi và khóa được gán cho phương thức mã hóa trả về một đối tượng NSData.NSData được mã hóa thành NSString trong obj-c?
Yêu cầu [mô tả dữ liệu] nơi 'dữ liệu' là dữ liệu chuỗi mã hóa cho một NSString như: "< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>" nhưng khi tôi cố gắng chuyển đổi đó để một NSString, tôi nhận được "(vô giá trị)".
Tôi cần trả lại NSString cho người dùng, có thể được sử dụng để giải mã ngược lại chuỗi gốc bằng cách sử dụng cùng một khóa văn bản thuần túy. Nếu thuộc tính 'description' của đối tượng NSData có thể trả về một chuỗi, có cách nào tôi có thể tạo ra một NSString từ đối tượng NSData mà không nhận được "(null)" không?
CẬP NHẬT: Nhờ Quinn, người đề xuất sử dụng mã hóa Base64 để tạo chuỗi bị xáo trộn. Từ những gì tôi hiểu, mã hóa Base64 không chỉ đơn giản là trao đổi các ký tự, nhưng trao đổi nhân vật phụ thuộc vào vị trí, vì vậy đó là tốt.
Mối quan tâm duy nhất của tôi là tôi muốn có thể mã hóa tin nhắn bằng 'cụm mật khẩu' và yêu cầu nhập cụm mật khẩu giống hệt khi chuỗi bị xáo trộn cần được giải mã - ai có thể đề xuất các cách để thực hiện việc này?
Tôi đã cập nhật câu trả lời của mình để giải quyết vấn đề này bên dưới. Bạn đúng, Base64 không phải là một thuật toán thay thế - về cơ bản nó mở rộng 3 byte đến 4 byte, vì vậy dữ liệu được mã hóa là 1.37x lớn như đối tác không mã hóa của nó. Về cơ bản, phải mất 3 khối 8 bit và chia nhỏ thành 4 khối 6 bit, sau đó diễn giải lại từng khối như khối 8 bit, có thể dễ dàng được biểu diễn bằng ASCII. Wikipedia có nhiều chi tiết hơn. –