key = md5( (string) $enc_key ); $this->key_type = (string) $key_type; } /** * * Encrypt a string (Passwords) * * @param string $string value to encrypt * * @return string encrypted string */ public function encrypt( $string ) { $result = ''; for ( $i = 0; $i < strlen( $string ); $i ++ ) { $char = substr( $string, $i, 1 ); $key_char = substr( $this->key, ( $i % strlen( $this->key ) ) - 1, 1 ); $char = chr( ord( $char ) + ord( $key_char ) ); $result .= $char; } return BackWPup_Encryption::PREFIX . self::PREFIX . $this->key_type . base64_encode( $result ); } /** * * Decrypt a string (Passwords) * * @param string $string value to decrypt * * @return string decrypted string */ public function decrypt( $string ) { if ( ! is_string( $string ) || ! $string || strpos( $string, BackWPup_Encryption::PREFIX . self::PREFIX . $this->key_type ) !== 0 ) { return ''; } $no_prefix = substr( $string, strlen( BackWPup_Encryption::PREFIX . self::PREFIX . $this->key_type ) ); $encrypted = base64_decode( $no_prefix, true ); if ( $encrypted === false ) { return ''; } $result = ''; for ( $i = 0; $i < strlen( $encrypted ); $i ++ ) { $char = substr( $encrypted, $i, 1 ); $key_char = substr( $this->key, ( $i % strlen( $this->key ) ) - 1, 1 ); $char = chr( ord( $char ) - ord( $key_char ) ); $result .= $char; } return $result; } }