Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
afnan47
GitHub Repository: afnan47/sem7
Path: blob/main/MC/2. Implement GSM Security algorithms/A5.c
426 views
1
#include <stdio.h>
2
#define SIZEX 19
3
#define SIZEY 22
4
#define SIZEZ 23
5
6
int maj(int, int, int);
7
8
int main(){
9
int x[SIZEX] = {1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
10
int y[SIZEY] = {1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
11
int z[SIZEZ] = {1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0};
12
13
int i,j = 0;
14
int m;
15
16
printf("\n");
17
for(i = 0; i < 9; i++){
18
m = maj(x[8], y[10], z[10]);
19
20
printf("X: ");
21
if(x[8] == m){
22
int t = x[13] ^ x[16] ^ x[17] ^ x[18];
23
for(j = SIZEX-1 ; j >= 0; j--){
24
if(j == 0){
25
x[j] = t;
26
}else{
27
x[j] = x[j-1];
28
}
29
30
}
31
}
32
33
for(j = 0; j < SIZEX; j++){
34
printf("%d", x[j]);
35
}
36
37
38
printf("\nY: ");
39
if(y[10] == m){
40
int t = y[20] ^ y[21];
41
for(j = SIZEY-1 ; j >= 0; j--){
42
if(j == 0){
43
y[j] = t;
44
}else{
45
y[j] = y[j-1];
46
}
47
}
48
49
}
50
for(j = 0; j < SIZEY; j++){
51
printf("%d",y[j]);
52
}
53
54
printf("\nZ: ");
55
if(z[10] == m){
56
int t = z[7] ^ z[20] ^ z[21] ^ z[22];
57
for(j = SIZEZ-1 ; j >= 0; j--){
58
if(j == 0){
59
z[j] = t;
60
}else{
61
z[j] = z[j-1];
62
}
63
}
64
}
65
for(j = 0; j < SIZEZ; j++){
66
printf("%d",z[j]);
67
}
68
69
if(i < 8){
70
int key = x[SIZEX-1] ^ y[SIZEY-1] ^ z[SIZEZ-1];
71
printf("\nKeystream bit = %d ^ %d ^ %d = %d",x[SIZEX-1],y[SIZEY-1],z[SIZEZ-1],key);
72
printf("\n\n");
73
}
74
}
75
}
76
77
int maj(x ,y, z){
78
int m;
79
if(x == 0){
80
if(y == 0 || z == 0){
81
m = 0;
82
}else{
83
m = 1;
84
}
85
}else{
86
if(y == 1 || z == 1){
87
m = 1;
88
}else{
89
m = 0;
90
}
91
}
92
return m;
93
}
94
95