Enum ChaosMode

    • Enum Constant Detail

      • NONE

        public static final ChaosMode NONE
        No additions are to be applied to the raw Chaos-based encryption/decryption.
      • MUTATE

        public static final ChaosMode MUTATE
        A MUTATION operation as of isMutateS() is being applied.
      • MUTATE_XOR

        public static final ChaosMode MUTATE_XOR
        Combination of the XOR mode alongside the MUTATE mode.
      • SALTED

        public static final ChaosMode SALTED
        A SALTING operation as of isSalted() is being applied where applicable.
      • SALTED_MUTATE

        public static final ChaosMode SALTED_MUTATE
        Combination of the SALTED mode alongside the MUTATE mode.
      • SALTED_XOR

        public static final ChaosMode SALTED_XOR
        Combination of the SALTED mode alongside the XOR mode.
      • SALTED_MUTATE_XOR

        public static final ChaosMode SALTED_MUTATE_XOR
        Combination of the SALTED mode as well as the XOR mode alongside the MUTATE mode.
    • Method Detail

      • values

        public static ChaosMode[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (ChaosMode c : ChaosMode.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static ChaosMode valueOf​(String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        IllegalArgumentException - if this enum type has no constant with the specified name
        NullPointerException - if the argument is null
      • isXorNext

        public boolean isXorNext()
        Determines whether an XOR obfuscation of the next byte value to be encrypted is to be applied with the previous byte value (before its encryption or zero 0 in case of the first value being processed). XOR does not seem to be too effective obfuscating similar encrypted data with the same ChaosKey, though for low capability devices it can be handy to add that little extra obfuscation to make it hard to interpolate between two similar but different messages. Disclaimer: Using this option "stand alone" in a ChaosKey not in combination with ChaosOptions.isSalted() either in this ChaosKey or in combination with another ChaosKey not completely closes the "comparison" attack vector (see "https://www.metacodes.pro/funcodes/blog/chaos-based_encryption_revisited")
        Specified by:
        isXorNext in interface ChaosOptions
        Returns:
        True in case XOR obfuscation is to be established.
      • isMutateS

        public boolean isMutateS()
        Determines whether a MUTATION operation of the ChaosKey's S value is to be applied with the previous byte value (before its encryption or zero 0 in case of the first value being processed), S then varies by +127 to -128 by each iteration: Nearly equal encrypted datasets will differ chaotically beginning with the the first occurrence of a different byte. Disclaimer: Using this option "stand alone" in a ChaosKey not in combination with ChaosOptions.isSalted() either in this ChaosKey or in combination with another ChaosKey not completely closes the "comparison" attack vector (see "https://www.metacodes.pro/funcodes/blog/chaos-based_encryption_revisited")
        Specified by:
        isMutateS in interface ChaosOptions
        Returns:
        True in case ADD obfuscation is to be established.
      • isSalted

        public boolean isSalted()
        Determines whether an additional SALTING operation with an additional salting (random) ChaosKey is to be applied: The salting ChaosKey's encoded bytes representation (as of ChaosKey.getEncoded()) is prefixed to the actual data which in a first pass is encoded with the this very salting ChaosKey. The salting ChaosKey encoded bytes representation as well as the succeeding initially encoded (salted) data then is encoded with the actual encryption ChaosKey, ensuring that the prefixed salting ChaosKey bytes are encoded. Decryption then is applied in reverse order. Currently only the ChaosEncryptionOutputStream and the ChaosDecryptionInputStream support salting! The ChaosEncrypter and ChaosDecrypter ignore this option!
        Specified by:
        isSalted in interface ChaosOptions
        Returns:
        True in case SALTING is to be established.
      • getRndPrefixSize

        public short getRndPrefixSize()
        Sets the number of random bytes to be prefixed upon a PREFIX operation of decrypted (raw) data when encrypting with the accordingly configured ChaosKey: Prefixing with random bytes will cause the same (succeeding) decrypted (raw) data to be encrypted differently even when using the same ChaosKey configuration. Valid values range from {1..256} representable by one byte as of {0x00..0xFF}. Disclaimer: Using this option "stand alone" in a ChaosKey not in combination with ChaosOptions.isSalted() either in this ChaosKey or in combination with another ChaosKey not close by any means the "comparison" attack vector (see "https://www.metacodes.pro/funcodes/blog/chaos-based_encryption_revisited")
        Specified by:
        getRndPrefixSize in interface ChaosOptions
        Returns:
        The number of bytes for establishing the PREFIX functionality, 0 if no prefixing is to be applied at all.