SlideShare uma empresa Scribd logo
1 de 19
Murphy Choy
University College Dublin
Data Masking with Classical
Ciphers
Introduction
•Data privacy has been a major problem.
•Data encryption algorithms
Caesar’s cipher
•One of the earliest known ciphers
•A shift in the in the alphabet order
•The encryption function is expressed below as
•The decryption function is expressed below as
How does Caesar’s cipher work?
ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZABCDEFGHIJKLM
I am alive
V nz nyvir
I am
V nz
Implementation
/********************************************************
GENERATION OF THE CIPHER THROUGH CHARACTER SHIFTS
*********************************************************/
DATA _NULL_;
/*ALPHABETICAL STRING: 26 CHARACTERS*/
ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
/*SHIFTING THE STRING BY THE NUMBER OF CHARACTER*/
CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT+1)
%DO I = 1 %TO &SHIFT;
||SUBSTR(ORIGINAL,&I,1)
%END;
);
/*ASSIGNING A MACRO VARIABLE FOR SUBSEQUENT USE*/
CALL SYMPUT('ORIGINAL',COMPRESS(ORIGINAL));
CALL SYMPUT('CIPHER',COMPRESS(CIPHER));
RUN;
Implementation
/********************************************************
ENCRYPTION OR DECRYPTION OF DATA
*********************************************************/
DATA &INPUT;
SET &INPUT;
/*ENCRYPTION*/
%IF &MODE = "ENCRYPT" %THEN %DO;
ENCRYPTED_&VAR = TRANSLATE(&VAR,"&ORIGINAL","&CIPHER");
%END;
/*DECRYPTION*/
%ELSE %IF &MODE = "DECRYPT" %THEN %DO;
DECRYPTED_&VAR = TRANSLATE(ENCRYPTED_&VAR,"&CIPHER","&ORIGINAL");
%END;
/*NO ACTION*/
%ELSE %DO;
&VAR = &VAR;
%END;
RUN;
Alberti’s cipher
•Leon Battista Alberti in the mid 15th century
•Method uses a wheel with 2 circles
•Substitution wheel changes for every Nth words
by a shift of K
How does the Alberti’s cipher work?
ABCDEFGHIJKLMNOPQRSTUVWXYZ
FGHIJKLMNOPQRSTUVWXYZABCDE
KLMNOPQRSTUVWXYZABCDEFGHIJ
PQRSTUVWXYZABCDEFGHIJKLMNO
ZABCDEFGHIJKLMNOPQRSTUVWXY
Implementation
/*FIRST TIME INITIALIZATION*/
IF _N_ = 1 THEN DO;
CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT_1+1)
%DO I = 1 %TO &SHIFT_1;
||SUBSTR(ORIGINAL,&I,1)
%END;
);
ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER);
COUNT = 1;
END;
/*EVERY NTH TIME REINITIALIZATION*/
ELSE IF COUNT = &SHIFT_2 THEN DO;
CIPHER = COMPRESS(SUBSTR(CIPHER,&SHIFT_3+1)
%DO I = 1 %TO &SHIFT_3;
||SUBSTR(CIPHER,&I,1)
%END;
);
ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER);
COUNT = 1;
END;
BIFID cipher
•Complex cipher
•Polybius square with transposition and
fractionation
•2 string substitution
How does the BIFID cipher works?
Iamalive
41211415
21313251
4121141521313251
DBQVBCHE
Implementation
/******************************************************************************
POLYBIUS CREATION SECTION
*******************************************************************************/
/*INITIALIZATION OF THE POLYBIUS TABLE*/
DATA POLYBIUS_TABLE;
ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.';
LENGTH_OF_STRING = LENGTH(ORIGINAL);
DO I = 1 TO LENGTH_OF_STRING;
/*SELECTING EACH LATTER AND OUTPUTTING THEM*/
WORD = SUBSTR(ORIGINAL,I,1);
OUTPUT;
END;
DROP ORIGINAL LENGTH_OF_STRING I;
RUN;
Implementation
/*CREATING RANDOMNESS TO PRODUCE SQUARES*/
DATA POLYBIUS_TABLE;
SET POLYBIUS_TABLE;
/*PRODUCING THE RANDOMNESS*/
CHANCE = RANUNI(&SEED);
RUN;
/*SORTING THE TABLE SIMULATE RANDOMNESS IN TABLE*/
PROC SORT DATA = POLYBIUS_TABLE;
BY CHANCE;
RUN;
Implementation
/*SETTING THE POSITION OF THE POLYBIUS TABLE*/
DATA POLYBIUS_TABLE;
SET POLYBIUS_TABLE;
RETAIN X Y COUNT;
/*FIRST INITIALIZATION*/
IF _N_ = 1 THEN DO;
X = 1;Y = 1;
COUNT = 1;
END;
/*REPETITION FOR THE SQUARE BEHAVIOR*/
ELSE IF COUNT = 6 THEN DO;
X = 1;Y = SUM(Y,1);
COUNT = 1;
END;
/*INTERMEDIATE CALCULATIONS*/
ELSE DO;
X = SUM(X,1);
COUNT = SUM(COUNT,1);
END;
RUN;
Implementation
/******************************************************************************
VALUE ASSIGNING SECTION
*******************************************************************************/
/*CIPHER CREATION SECTION*/
DATA _NULL;
SET POLYBIUS_TABLE;
/*LENGTH DECLARATIONS*/
LENGTH CIPHER1 $45 CIPHER2 $45 KEY $45;
/*KEY RETENTION FOR BOTH CIPHER AND DECIPHER*/
RETAIN CIPHER1;
RETAIN CIPHER2;
RETAIN KEY;
/*ENCRYPTION KEY AND CIPHERS*/
KEY = COMPRESS(KEY||WORD);
CIPHER1 = COMPRESS(CIPHER1||X);
CIPHER2 = COMPRESS(CIPHER2||Y);
Implementation
/*ASSIGNMENT OF KEY AND CIPHER AS MACRO VALUES*/
CALL SYMPUT('CIPHER1',COMPRESS(CIPHER1));
CALL SYMPUT('CIPHER2',COMPRESS(CIPHER2));
CALL SYMPUT('KEY',COMPRESS(KEY));
/*SUBSTITUTION KEY SECTION*/
SUB_KEY = COMPRESS(X||Y);
CALL SYMPUT('SUBKEY'||TRIM(LEFT(_N_)),SUB_KEY);
CALL SYMPUT('LETTER'||TRIM(LEFT(_N_)),WORD);
PUT SUB_KEY = KEY = CIPHER1 = CIPHER2 =;
RUN;
Implementation
/*DECLARATION OF THE LENGTH OF THE ENCRYPTED FIELD*/
LENGTH ENCRYPTED_&VAR $ &MAX_LENGTH;
/*REMOVAL OF SPACES WITH DECIMALS*/
&VAR = SUBSTR(TRANSLATE(&VAR,'.',' '),1,LENGTH(&VAR));
/*CREATING CIPHER KEYS*/
CIPHER1_&VAR = TRANSLATE(&VAR,"&CIPHER1","&KEY");
CIPHER2_&VAR = TRANSLATE(&VAR,"&CIPHER2","&KEY");
/*COMBINED CIPHER KEY*/
CIPHER_&VAR = COMPRESS(CIPHER1_&VAR||CIPHER2_&VAR);
Implementation/*SUBSTITUTION OF KEYS*/
DO I = 1 TO LENGTH(CIPHER_&VAR)-1 BY 2;
/*INITIALIZATION*/
IF I = 1 THEN ENCRYPTED_&VAR = '';
/*SUBSTITUTION STEPS*/
IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&SUBKEY1") THEN ENCRYPTED_&VAR =
COMPRESS(ENCRYPTED_&VAR||"&LETTER1");
%DO J = 1 %TO 36;
ELSE IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&&SUBKEY&J") THEN ENCRYPTED_&VAR =
COMPRESS(ENCRYPTED_&VAR||"&&LETTER&J");
%END;
END;
/*REMOVAL OF UNNECESSARY COLUMNS*/
DROP I CIPHER1_&VAR CIPHER2_&VAR CIPHER_&VAR;
Conclusion
•Ciphers are easily implemented using SAS

Mais conteúdo relacionado

Mais de Murphy Choy

Applications of the DOW loop
Applications of the DOW loop Applications of the DOW loop
Applications of the DOW loop Murphy Choy
 
Building a decision tree from decision stumps
Building a decision tree from decision stumpsBuilding a decision tree from decision stumps
Building a decision tree from decision stumpsMurphy Choy
 
Data masking in sas
Data masking in sasData masking in sas
Data masking in sasMurphy Choy
 
A simple introduction to candlestick charts in sas
A simple introduction to candlestick charts in sasA simple introduction to candlestick charts in sas
A simple introduction to candlestick charts in sasMurphy Choy
 
General Insurance Conference 2014: Big Data for Insurance Companies
General Insurance Conference 2014: Big Data for Insurance CompaniesGeneral Insurance Conference 2014: Big Data for Insurance Companies
General Insurance Conference 2014: Big Data for Insurance CompaniesMurphy Choy
 
Edison chen and Cammie Tse Scandal: A twitter study
Edison chen and Cammie Tse Scandal: A twitter studyEdison chen and Cammie Tse Scandal: A twitter study
Edison chen and Cammie Tse Scandal: A twitter studyMurphy Choy
 
Real Time Process Compliance using Nomenclature Approach
Real Time Process Compliance using Nomenclature ApproachReal Time Process Compliance using Nomenclature Approach
Real Time Process Compliance using Nomenclature ApproachMurphy Choy
 

Mais de Murphy Choy (7)

Applications of the DOW loop
Applications of the DOW loop Applications of the DOW loop
Applications of the DOW loop
 
Building a decision tree from decision stumps
Building a decision tree from decision stumpsBuilding a decision tree from decision stumps
Building a decision tree from decision stumps
 
Data masking in sas
Data masking in sasData masking in sas
Data masking in sas
 
A simple introduction to candlestick charts in sas
A simple introduction to candlestick charts in sasA simple introduction to candlestick charts in sas
A simple introduction to candlestick charts in sas
 
General Insurance Conference 2014: Big Data for Insurance Companies
General Insurance Conference 2014: Big Data for Insurance CompaniesGeneral Insurance Conference 2014: Big Data for Insurance Companies
General Insurance Conference 2014: Big Data for Insurance Companies
 
Edison chen and Cammie Tse Scandal: A twitter study
Edison chen and Cammie Tse Scandal: A twitter studyEdison chen and Cammie Tse Scandal: A twitter study
Edison chen and Cammie Tse Scandal: A twitter study
 
Real Time Process Compliance using Nomenclature Approach
Real Time Process Compliance using Nomenclature ApproachReal Time Process Compliance using Nomenclature Approach
Real Time Process Compliance using Nomenclature Approach
 

Último

CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxolyaivanovalion
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysismanisha194592
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxJohnnyPlasten
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998YohFuh
 
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiVIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiSuhani Kapoor
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfMarinCaroMartnezBerg
 
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...Suhani Kapoor
 
Halmar dropshipping via API with DroFx
Halmar  dropshipping  via API with DroFxHalmar  dropshipping  via API with DroFx
Halmar dropshipping via API with DroFxolyaivanovalion
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxolyaivanovalion
 
Schema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfSchema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfLars Albertsson
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusTimothy Spann
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023ymrp368
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionfulawalesam
 
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfMarket Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfRachmat Ramadhan H
 
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一ffjhghh
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxolyaivanovalion
 

Último (20)

CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptx
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptx
 
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998
 
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiVIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
 
Halmar dropshipping via API with DroFx
Halmar  dropshipping  via API with DroFxHalmar  dropshipping  via API with DroFx
Halmar dropshipping via API with DroFx
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
Schema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfSchema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdf
 
Sampling (random) method and Non random.ppt
Sampling (random) method and Non random.pptSampling (random) method and Non random.ppt
Sampling (random) method and Non random.ppt
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interaction
 
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfMarket Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
 
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptx
 

Data masking with classical ciphers

  • 1. Murphy Choy University College Dublin Data Masking with Classical Ciphers
  • 2. Introduction •Data privacy has been a major problem. •Data encryption algorithms
  • 3. Caesar’s cipher •One of the earliest known ciphers •A shift in the in the alphabet order •The encryption function is expressed below as •The decryption function is expressed below as
  • 4. How does Caesar’s cipher work? ABCDEFGHIJKLMNOPQRSTUVWXYZ NOPQRSTUVWXYZABCDEFGHIJKLM I am alive V nz nyvir I am V nz
  • 5. Implementation /******************************************************** GENERATION OF THE CIPHER THROUGH CHARACTER SHIFTS *********************************************************/ DATA _NULL_; /*ALPHABETICAL STRING: 26 CHARACTERS*/ ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; /*SHIFTING THE STRING BY THE NUMBER OF CHARACTER*/ CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT+1) %DO I = 1 %TO &SHIFT; ||SUBSTR(ORIGINAL,&I,1) %END; ); /*ASSIGNING A MACRO VARIABLE FOR SUBSEQUENT USE*/ CALL SYMPUT('ORIGINAL',COMPRESS(ORIGINAL)); CALL SYMPUT('CIPHER',COMPRESS(CIPHER)); RUN;
  • 6. Implementation /******************************************************** ENCRYPTION OR DECRYPTION OF DATA *********************************************************/ DATA &INPUT; SET &INPUT; /*ENCRYPTION*/ %IF &MODE = "ENCRYPT" %THEN %DO; ENCRYPTED_&VAR = TRANSLATE(&VAR,"&ORIGINAL","&CIPHER"); %END; /*DECRYPTION*/ %ELSE %IF &MODE = "DECRYPT" %THEN %DO; DECRYPTED_&VAR = TRANSLATE(ENCRYPTED_&VAR,"&CIPHER","&ORIGINAL"); %END; /*NO ACTION*/ %ELSE %DO; &VAR = &VAR; %END; RUN;
  • 7. Alberti’s cipher •Leon Battista Alberti in the mid 15th century •Method uses a wheel with 2 circles •Substitution wheel changes for every Nth words by a shift of K
  • 8. How does the Alberti’s cipher work? ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKLMNOPQRSTUVWXYZABCDE KLMNOPQRSTUVWXYZABCDEFGHIJ PQRSTUVWXYZABCDEFGHIJKLMNO ZABCDEFGHIJKLMNOPQRSTUVWXY
  • 9. Implementation /*FIRST TIME INITIALIZATION*/ IF _N_ = 1 THEN DO; CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT_1+1) %DO I = 1 %TO &SHIFT_1; ||SUBSTR(ORIGINAL,&I,1) %END; ); ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER); COUNT = 1; END; /*EVERY NTH TIME REINITIALIZATION*/ ELSE IF COUNT = &SHIFT_2 THEN DO; CIPHER = COMPRESS(SUBSTR(CIPHER,&SHIFT_3+1) %DO I = 1 %TO &SHIFT_3; ||SUBSTR(CIPHER,&I,1) %END; ); ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER); COUNT = 1; END;
  • 10. BIFID cipher •Complex cipher •Polybius square with transposition and fractionation •2 string substitution
  • 11. How does the BIFID cipher works? Iamalive 41211415 21313251 4121141521313251 DBQVBCHE
  • 12. Implementation /****************************************************************************** POLYBIUS CREATION SECTION *******************************************************************************/ /*INITIALIZATION OF THE POLYBIUS TABLE*/ DATA POLYBIUS_TABLE; ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.'; LENGTH_OF_STRING = LENGTH(ORIGINAL); DO I = 1 TO LENGTH_OF_STRING; /*SELECTING EACH LATTER AND OUTPUTTING THEM*/ WORD = SUBSTR(ORIGINAL,I,1); OUTPUT; END; DROP ORIGINAL LENGTH_OF_STRING I; RUN;
  • 13. Implementation /*CREATING RANDOMNESS TO PRODUCE SQUARES*/ DATA POLYBIUS_TABLE; SET POLYBIUS_TABLE; /*PRODUCING THE RANDOMNESS*/ CHANCE = RANUNI(&SEED); RUN; /*SORTING THE TABLE SIMULATE RANDOMNESS IN TABLE*/ PROC SORT DATA = POLYBIUS_TABLE; BY CHANCE; RUN;
  • 14. Implementation /*SETTING THE POSITION OF THE POLYBIUS TABLE*/ DATA POLYBIUS_TABLE; SET POLYBIUS_TABLE; RETAIN X Y COUNT; /*FIRST INITIALIZATION*/ IF _N_ = 1 THEN DO; X = 1;Y = 1; COUNT = 1; END; /*REPETITION FOR THE SQUARE BEHAVIOR*/ ELSE IF COUNT = 6 THEN DO; X = 1;Y = SUM(Y,1); COUNT = 1; END; /*INTERMEDIATE CALCULATIONS*/ ELSE DO; X = SUM(X,1); COUNT = SUM(COUNT,1); END; RUN;
  • 15. Implementation /****************************************************************************** VALUE ASSIGNING SECTION *******************************************************************************/ /*CIPHER CREATION SECTION*/ DATA _NULL; SET POLYBIUS_TABLE; /*LENGTH DECLARATIONS*/ LENGTH CIPHER1 $45 CIPHER2 $45 KEY $45; /*KEY RETENTION FOR BOTH CIPHER AND DECIPHER*/ RETAIN CIPHER1; RETAIN CIPHER2; RETAIN KEY; /*ENCRYPTION KEY AND CIPHERS*/ KEY = COMPRESS(KEY||WORD); CIPHER1 = COMPRESS(CIPHER1||X); CIPHER2 = COMPRESS(CIPHER2||Y);
  • 16. Implementation /*ASSIGNMENT OF KEY AND CIPHER AS MACRO VALUES*/ CALL SYMPUT('CIPHER1',COMPRESS(CIPHER1)); CALL SYMPUT('CIPHER2',COMPRESS(CIPHER2)); CALL SYMPUT('KEY',COMPRESS(KEY)); /*SUBSTITUTION KEY SECTION*/ SUB_KEY = COMPRESS(X||Y); CALL SYMPUT('SUBKEY'||TRIM(LEFT(_N_)),SUB_KEY); CALL SYMPUT('LETTER'||TRIM(LEFT(_N_)),WORD); PUT SUB_KEY = KEY = CIPHER1 = CIPHER2 =; RUN;
  • 17. Implementation /*DECLARATION OF THE LENGTH OF THE ENCRYPTED FIELD*/ LENGTH ENCRYPTED_&VAR $ &MAX_LENGTH; /*REMOVAL OF SPACES WITH DECIMALS*/ &VAR = SUBSTR(TRANSLATE(&VAR,'.',' '),1,LENGTH(&VAR)); /*CREATING CIPHER KEYS*/ CIPHER1_&VAR = TRANSLATE(&VAR,"&CIPHER1","&KEY"); CIPHER2_&VAR = TRANSLATE(&VAR,"&CIPHER2","&KEY"); /*COMBINED CIPHER KEY*/ CIPHER_&VAR = COMPRESS(CIPHER1_&VAR||CIPHER2_&VAR);
  • 18. Implementation/*SUBSTITUTION OF KEYS*/ DO I = 1 TO LENGTH(CIPHER_&VAR)-1 BY 2; /*INITIALIZATION*/ IF I = 1 THEN ENCRYPTED_&VAR = ''; /*SUBSTITUTION STEPS*/ IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&SUBKEY1") THEN ENCRYPTED_&VAR = COMPRESS(ENCRYPTED_&VAR||"&LETTER1"); %DO J = 1 %TO 36; ELSE IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&&SUBKEY&J") THEN ENCRYPTED_&VAR = COMPRESS(ENCRYPTED_&VAR||"&&LETTER&J"); %END; END; /*REMOVAL OF UNNECESSARY COLUMNS*/ DROP I CIPHER1_&VAR CIPHER2_&VAR CIPHER_&VAR;
  • 19. Conclusion •Ciphers are easily implemented using SAS