
Encrypt.m 的原始程式碼如下
#import <Foundation/Foundation.h>
#import "Encrypt.h"
@implementation Encrypt
@synthesize cArray, oArray;
- (id) initRandomEncrypt
{
// 設置 y = a * x + b 中的 a 與 b
int a = 0;
int b = 0;
do {
a = arc4random() % 10;
b = arc4random() % 10;
} while (a % 2 == 0);
// 建立 oArray 及 cArray
oArray = [NSArray arrayWithObjects:
@"a", @"b", @"c", @"d", @"e", @"f", @"g",
@"h", @"i", @"j", @"k", @"l", @"m", @"n",
@"o", @"p", @"q", @"r", @"s", @"t", @"w",
@"v", @"u", @"x", @"y", @"z", nil];
cArray = [NSMutableArray arrayWithCapacity: 26];
// 製作密碼表 cArray
int n = 26;
char c = 'a';
int i, d, ci, count, m;
for (i = 0, count = c;i < n;i++) {
ci = count;
d = ci * a + b;
m = d % n;
[cArray addObject: [oArray objectAtIndex: m]];
count++;
}
// 回傳 self
return self;
}
- (NSString *) toEncode: (NSString *) s
{
NSString *r = @"";
int number = [s length];
char ct;
int i;
for (i = 0;i < number;i++) {
ct = [s characterAtIndex: i];
if (ct >= 97 && ct <= 122) {
r = [r stringByAppendingString: [cArray objectAtIndex: ct - 97]];
}
else {
r = [r stringByAppendingFormat: @"%c", ct];
}
}
return r;
}
- (NSString *) toDecode: (NSString *) s
{
NSString *r = @"";
int number = [s length];
char ct;
int i, j;
for (i = 0;i < number;i++) {
ct = [s characterAtIndex: i];
if (ct >= 97 && ct <= 122) {
for (j = 0;j < 26;j++) {
if (ct == [[cArray objectAtIndex: j] characterAtIndex: 0]) {
r = [r stringByAppendingString: [oArray objectAtIndex: j]];
break;
}
}
}
else {
r = [r stringByAppendingFormat: @"%c", ct];
}
}
return r;
}
@end您可以繼續參考
範例程式碼
相關目錄
Objective-C 入門指南
Objective-C 教材
首頁
參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide
沒有留言:
張貼留言