A virtual enigma cipher system is described herein that allows for symmetric encryption and decryption of data. During encryption, a plurality of wheels representing sequences of data are used to encrypt a message. The plurality of wheels includes at least one dynamic wheel, which is generated based on a password, and a plurality of static wheels. During encryption, the unencrypted message is iterated from beginning to end. During each step of iteration, the encrypted payload value for a particular position is determined by performing an exclusive or (XOR) operation between the value of the unencrypted message at the position, and the values of the wheels at their respective wheel pointer positions. The particular position is then incremented, as are the wheel pointer positions, and iteration continues until the entire unencrypted message has been encrypted as part of the encrypted payload. Padding data and the message length are appended to the encrypted payload. During decryption, the steps are reversed.
展开▼