iOS RC4加解密演算法

來源:互聯網
上載者:User

標籤:

-(NSString *)encrypt:(NSString *)string withKey:(NSString *)key{

    self.sBox = [[self frameSBox:key] mutableCopy];

    unichar code[string.length];

    int i = 0;

    int j = 0;

    for (int n = 0; n < string.length; n++) {

        i = (i + 1) % SBOX_LENGTH;

        j = (j + [[self.sBox objectAtIndex:i]integerValue]) % SBOX_LENGTH;

        [self.sBox exchangeObjectAtIndex:i withObjectAtIndex:j];

        NSInteger index=([self.sBox[i] integerValue]+[self.sBox[j] integerValue]);

        NSInteger rand=([self.sBox[(index%SBOX_LENGTH)] integerValue]);

        code[n]=(rand  ^  (int)[string characterAtIndex:n]);

    }

    const unichar* buffer;

    buffer = code;

    return  [NSString stringWithCharacters:buffer length:string.length];

}

- (NSString*) decrypt:(NSString*)string withKey:(NSString*)key

{

    return [self encrypt:string withKey:key];

}

-(NSArray *)frameSBox:(NSString *)keyValue{

    NSMutableArray *sBox = [[NSMutableArray alloc] initWithCapacity:SBOX_LENGTH];

    int j = 0;

    for (int i = 0; i < SBOX_LENGTH; i++) {

        [sBox addObject:[NSNumber numberWithInteger:i]];

    }

    for (int i = 0; i < SBOX_LENGTH; i++) {

        j = (j + [sBox[i] integerValue] + [keyValue characterAtIndex:(i % keyValue.length)]) % SBOX_LENGTH;

        [sBox exchangeObjectAtIndex:i withObjectAtIndex:j];

    }

    return [NSArray arrayWithArray:sBox];

}

 

iOS RC4加解密演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.