2

人間が判読できないように NSString を暗号化したいと思います。セキュリティのレベルは適切ではありません (つまり、誰かがテキストを解読したとしても、機密情報を盗むことはできません。

NSString *myTextToEncrypt = @"Hello World!";

[myTextToEncrypt encrypt];

// myTextToEncrypt is now something unreadable, like '2rwzdn1405'

次に、この文字列の暗号化を解除できるはずです

[myTextToEncrypt unencrypt]; // myTextToEncrypt should now be @"Hello World!" again

どうすればいいですか?CommonCrypto と AES 暗号化についていくつか読んだことがありますが、これはすべて私がやろうとしていることに対してやり過ぎのようです (私が読んだ暗号化方法はすべてパスワードやその他の機密データのためのものです)

4

2 に答える 2

3

最も簡単なのは、独自の暗号化を使用することです。

Utils.h

@interface Utils : NSObject
+(NSString*)encyptString:(NSString*)str;
+(NSString*)decryptString:(NSString*)str;
@end

Utils.m

#import "Utils.h"

int offset = 15;
@implementation Utils
+(NSString*)encyptString:(NSString*)str
{
    NSMutableString *encrptedString = [[NSMutableString alloc] init];
    for (int i = 0; i < str.length; i++) {
        unichar character = [str characterAtIndex:i];
        character += offset;
        [encrptedString appendFormat:@"%C",character];
    }
    return encrptedString;
}

+(NSString*)decryptString:(NSString*)str
{
    NSMutableString *decrptedString = [[NSMutableString alloc] init];
    for (int i = 0; i < str.length; i++) {
        unichar character = [str characterAtIndex:i];
        character -= offset;
        [decrptedString appendFormat:@"%C",character];
    }
    return decrptedString;
}
@end

それの使い方

NSString *str = @"hello world";
NSString *enr = [Utils encyptString:str];
NSLog(@"Encrypted Text=%@", enr);
NSLog(@"Decrypted Text=%@", [Utils decryptString:enr]);

ログ

2013-08-11 10:44:09.409 DeviceTest[445:c07] Encrypted Text=wt{{~/~{s
2013-08-11 10:44:09.412 DeviceTest[445:c07] Decrypted Text=hello world
于 2013-08-11T05:13:08.400 に答える
2

これを行うために使用できますbase64

Objective-C で利用可能な実装がいくつかあります (この例のように)。

コンテンツは、エンコード後に約 30% 大きくなることに注意してください。

于 2013-08-11T05:02:20.157 に答える