It works for a range of a string of length 20 characters or less if you are encrypting one of the first 26+26+10+30 characters in the unicode index at any given point along the 20 character line. It probably works higher, I just didn't test it any higher.
This is the code I created to test it, all unicode characters were stored in an NSString and stayed valid for counting later.
int i = 0;
NSMutableString *encryptedFinal = [[NSMutableString alloc] init];
NSString *theString = @"a";
int j = 26+26+10+30;//letters + capital letters + numbers + 30 extra things like ?><.\]!@$
int f = 0;
int z = 0;
while (f < j) {
while (i < 220+220+(14*20)) {
unichar uniCharacter = [theString characterAtIndex:0];
uniCharacter += +f;
uniCharacter += +220+(14*i);
[encryptedFinal appendFormat:@"%C", uniCharacter];
i++;
}
z += i;
f++;
i = 0;
}
NSLog(@"%@", encryptedFinal);
NSLog(@"%i == %i?", z, encryptedFinal.length);