Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Structure XorUInteger
- Private Shared Rnd As New Random
- Private ReadOnly Secret As UInteger
- Private StoredValue, TokenSum, ValueSum As UInteger
- Public Sub New(ByRef Token As UInteger)
- Secret = Rnd.Next()
- Token = Rnd.Next()
- TokenSum = (Secret Xor Token)
- End Sub
- Public Sub Store(ByRef Token As UInteger, ByVal Value As UInteger)
- If (Secret Xor Token) = TokenSum Then
- Token = Rnd.Next()
- TokenSum = (Secret Xor Token)
- ValueSum = (Secret Xor Value)
- StoredValue = (Value Xor Token)
- Else
- Throw New Exception("Token checksum mismatch")
- End If
- End Sub
- Default Public ReadOnly Property Value(ByVal Token As UInteger) As UInteger
- Get
- Dim R As UInteger = (Token Xor StoredValue)
- If (R Xor Secret) = ValueSum _
- Then Return R _
- Else Throw New Exception("Value checksum mismatch")
- End Get
- End Property
- End Structure
Add Comment
Please, Sign In to add comment