Taka has the honor of being credited with the most posts from a single submission. I'm sure that's little consolation considering how much money his company spent on this open source1 system, and how much effort it has taken to get it working. No less, today's code is the fourth (parts 1, 2, 3) and final piece from the encryption module.

Note that, before using these "binary math" functions, the module must convert first convert decimals into a hexadecimal string, and then convert the hex string into a binary string ...

```Function Shiftbin(bin, places)
'left shift binary
Shiftbin = _
Right(bin, Len(bin) - cint(places)) & _
Left(bin, cint(places))
End Function

Function XORbin(bin1, bin2)
' eXclusive OR on two binaries
Dim output, idx

For idx = 1 To Len(bin1)

Select Case Mid(bin1, CInt(idx), 1)
Case Mid(bin2, CInt(idx), 1)
output = output & "0"
Case Else
output = output & "1"
End Select
Next

XORbin = output

End Function

Function ORbin(bin1, bin2)
' inclusive OR on two binaries
Dim output, idx

For idx = 1 To Len(bin1)
If Mid(bin1, cint(idx), 1) = "1" Or _
Mid(bin2, cint(idx), 1) = "1" Then
output = output & "1"
Else
output = output & "0"
End If
Next

ORbin = output

End Function

Function ANDbin(bin1, bin2)
' AND function on two binaries

Dim output, idx
For idx = 1 To Len(bin1)
If Mid(bin1, cint(idx), 1) = "1" And _
Mid(bin2, cint(idx), 1) = "1" Then
output = output & "1"
Else
output = output & "0"
End If
Next

ANDbin = output

End Function

Function NOTbin(bin)
' Swaps 1's and 0's of a given binary

Dim output, idx

For idx = 1 To Len(bin)
If Mid(bin, cint(idx), 1) = "1" Then
output = output & "0"
Else
output = output & "1"
End If
Next

NOTbin = output

End Function
```

1 Open Source as in, they paid more money to have a licence to look at and modify the source code. [Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!