Objective-C 入門指南 - Encrypt.m




Encrypt.m 的原始程式碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#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

沒有留言: