** **In this matlab tutorial we are going to see video encryption using **Caesar cipher**. In cryptography, a **Caesar cipher**, also known as **Caesar’s cipher**, the **shift cipher**, **Caesar’s code** or **Caesar shift**, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence.

Example:-

The transformation can be represented by aligning two alphabets; the cipher alphabet is the plain alphabet rotated left or right by some number of positions. For instance, here is a Caesar cipher using a left rotation of three places, equivalent to a right shift of 23 (the shift parameter is used as the key):

Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Cipher: XYZABCDEFGHIJKLMNOPQRSTUVW

The encryption can also be represented using modular arithmetic by first transforming the letters into numbers, according to the scheme, A = 0, B = 1,…, Z = 25. Encryption of a letter by a shift *n* can be described mathematically as:

* E(X)=(X+n) mod 26*

*Decryption is performed similarly,*

*D(X)=(X-n) mod 26*

The Caesar cipher can be easily broken even in a ciphertext-only scenario. Two situations can be considered:

- an attacker knows (or guesses) that some sort of simple substitution cipher has been used, but not specifically that it is a Caesar scheme;
- an attacker knows that a Caesar cipher is in use, but does not know the shift value.

In the first case, the cipher can be broken using the same techniques as for a general simple substitution cipher, such as frequency analysis or pattern words. While solving, it is likely that an attacker will quickly notice the regularity in the solution and deduce that a Caesar cipher is the specific algorithm employed.

**Video, Its Representation and Encryption:**

** **Any video is the collection of frames. These frames can be extracted from video or can be added to existing video at different speed (frame rates). In this project we have read the video directly from webcam frame by frame and the apply Caesar Cipher Encryption on the data from those frames. Every frame in video is consists of three matrices, 1^{st} for representing Red color, 2^{nd} for Green and 3^{rd} for Blue

Example

For image of size 4 X 4

Matrix representing Red Color

(1 ; ; )

123 124 10 09

100 200 200 232

134 155 156 172

10 60 45 123

(; 2 ; ; )

123 124 10 09

100 200 200 232

134 155 156 172

10 60 45 123

(; ; 3 ; )

123 124 10 09

100 200 200 232

134 155 156 172

10 60 45 123

For encrypting such frame using Matlab following is the code snippet ( see complete code)

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 |
….. …. …. …. img = getsnapshot(vid); img_size = size(img); img1=zeros(img_size(1),img_size(2),3); % loading data from frame to variable img1 for a =1:img_size(1) for b=1:img_size(2) for c=1:img_size(3) img1(a,b,c)= img(a,b,c); end; end; end; % encrypting data in img1 for a =1:img_size(1) for b=1:img_size(2) for c=1:img_size(3) img1(a,b,c)= img1(a,b,c) + 200; if(img1(a,b,c)>255) img1(a,b,c)=img1(a,b,c)-255; end; %saving encrypted data back to image img(a,b,c)=img1(a,b,c); end; end; end; …. …. |

Note that here img_size is the matrix which will contain dimension details of the frame/image, here for example for 4 X 4 image its values will be [ 4 4 4 1] and the img1 matrix will contain encrypted image data which will be loaded back to frame.

**Video Decryption:**

Decryption process is exactly opposite to encryption. Here video will be read from the file which is already encrypted, frames will be extracted and then decrypted, later stored to other video file, and following is the code snippet (see complete code )

1 2 3 4 5 6 7 8 9 10 11 |
for a =1:img_size(1) for b=1:img_size(2) for c=1:img_size(3) img1(a,b,c)= img1(a,b,c)-200; if(img1(a,b,c)<0) img1(a,b,c)=255+img1(a,b,c); end; img(a,b,c)=img1(a,b,c); end; end; end; |