Package org.apache.cayenne.configuration

## Class Rot47PasswordEncoder

- java.lang.Object
- - org.apache.cayenne.configuration.Rot47PasswordEncoder

- All Implemented Interfaces:
    `PasswordEncoding`

      public class Rot47PasswordEncoder
      extends Object
      implements PasswordEncoding

  The ROT-47 password encoder passes the text of the database password through a simple Caesar cipher to obscure the password text. The ROT-47 cipher is similar to the ROT-13 cipher, but processes numbers and symbols as well. See the Wikipedia entry on ROT13 for more information on this topic.
  Since:
    3.0

- - ### Field Summary

    - ### Fields inherited from interface org.apache.cayenne.configuration.PasswordEncoding

      `standardEncoders`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Rot47PasswordEncoder()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `decodePassword​(String encodedPassword, String key)` | Decodes an encoded database password.
    `String` | `encodePassword​(String normalPassword, String key)` | Encodes a normal/plain database password.
    `String` | `rotate​(String value)` | Applies a ROT-47 Caesar cipher to the supplied value.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Rot47PasswordEncoder

          public Rot47PasswordEncoder()

  - ### Method Detail

    - #### decodePassword

          public String decodePassword​(String encodedPassword,
                                       String key)

      Description copied from interface: `PasswordEncoding`
      Decodes an encoded database password.
      Specified by:
        `decodePassword` in interface `PasswordEncoding`
      Parameters:
        `encodedPassword` - - The encoded password to be decoded
        `key` - - An optional data element which can be used to unlock the password. Some encoders may require the key.
      Returns:
        The decoded normal/plain password.

    - #### encodePassword

          public String encodePassword​(String normalPassword,
                                       String key)

      Description copied from interface: `PasswordEncoding`
      Encodes a normal/plain database password.
      Specified by:
        `encodePassword` in interface `PasswordEncoding`
      Parameters:
        `normalPassword` - - The normal/plain password to be encoded
        `key` - - An optional data element which can be used to lock the password. Some encoders may require the key.
      Returns:
        The encoded password.

    - #### rotate

          public String rotate​(String value)

      Applies a ROT-47 Caesar cipher to the supplied value. Each letter in the supplied value is substituted with a new value rotated by 47 places. See ROT13 for more information (there is a subsection for ROT-47).

      A Unix command to perform a ROT-47 cipher is:

           tr '!-~' 'P-~!-O'

      Parameters:
        `value` - The text to be rotated.
      Returns:
        The rotated text.