文字列を暗号化する方法のメモ。今回は可逆暗号化が目的なのでblowfishを使います。
Security.framework
が必要なので、Build Phasesで追加してください。
#import <CommonCrypto/CommonCrypto.h> // 文字列をblowfish暗号化する + (NSString *)encodeBlowfish:(NSString *)str { NSData *key = [@"key" dataUsingEncoding:NSUTF8StringEncoding]; NSData *iv = [@"salt" dataUsingEncoding:NSUTF8StringEncoding]; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *myEnc = [NSMutableData dataWithLength:kCCKeySizeMaxBlowfish+str.length]; size_t wSize = ( ( myEnc.length + kCCBlockSizeBlowfish - 1 ) / kCCBlockSizeBlowfish ) * kCCBlockSizeBlowfish; char v[ wSize ]; CCCrypt(kCCEncrypt, kCCAlgorithmBlowfish, kCCOptionPKCS7Padding, key.bytes, key.length, iv.bytes, data.bytes, data.length, v, wSize, &wSize); return [NSData dataWithBytes:v length:wSize]; }
文字列として扱いたい場合は以下のようにすればOK。
NSData *data = [self encodeBlowfish:@"hoge"]; NSString *str = [data description];