# VB:Tutorials:Basic Encryption with XOR

Basic is right! This is not some brain-bending algorithm, in fact, you could say that it's e**X**tra**OR**dinarily easy! How's that for subliminal messaging? Yes, we'll be using the `XOR` operator.

For those of you not familiar with `XOR`, I'll give you a little lesson. `XOR` is supposed to mean "exclusive OR". It is so called because it only returns `True` if one and only one of the expressions it is passed is `True`. Wait, that sounds confusing :) An illustration is in order!

```
True Xor True = False
True Xor False = True
False Xor True = True
False Xor False = False
```

See? Now, the logical operations of `XOR` (above) are less useful to us than the bitwise operations. Observe:

```
1 Xor 1 = 0
1 Xor 0 = 1
0 Xor 1 = 1
0 Xor 0 = 0
```

This is pretty much the same as the logical operation, but watch, we can perform it on a whole bunch of bits (say... a BYTE!) at a time:

11111111 XOR 01010101 (Key) Result: 10101010

Here comes the magic.. if we `XOR` again, using the value I've marked `Key` and the result, we obtain the original!

10101010 (Old Result) XOR 01010101 (Key) Result: 11111111 (!!!)

This works in all situations when the key is held constant: `XOR` once, you have an encrypted result. `XOR` again with the same key, and you get the original value. Sounds cool, but how can we apply it practically? When storing data in a binary file, it is a simple matter to `XOR` each byte that is read or written in order to encrypt/decrypt it. To encrypt data under other circumstances can be a little trickier. You need to coerce that data into byte form, and then back again. We'll do it with strings here:

```
Dim strResult As String
Dim strChar1 As String * 1
Dim strChar2 As String * 1
```

```
``` strChar1 = "E"
strChar2 = "z"
strResult = Chr(Asc(strChar1) Xor Asc(strChar2))

```
```

This code will `XOR` `"E"` with `"z"` by converting them to their ASCII values! Once converted to ASCII, they can be treated like bytes and `XOR`'ed. We can then convert back to string format using the `Chr` function. This method can be adapted using a `For` loop to encrypt complex strings using equally complex key values. Click here to download sample source code for an example of string encryption.