class_docstr: Holds the encryption functions
  can randomly select an encryption function  use on text
  returns:
      {"text": t, "plaintext": c, "cipher": p, "succeeds": False}
  
  where succeeds is whether or not the text is really encrypted or falsely decrypted
  
  Uses Cyclic3's module  generate pseudo random text
class_docstr_tok: ["Holds","the","encryption","functions","can","randomly","select","an","encryption","function","use","on","text","returns",":","{","``","text","''",":","t",",","``","plaintext","''",":","c",",","``","cipher","''",":","p",",","``","succeeds","''",":","False","}","where","succeeds","is","whether","or","not","the","text","is","really","encrypted","or","falsely","decrypted","Uses","Cyclic3","'s","module","generate","pseudo","random","text"]
docstr: Applies a shift of facr  the letter denoted by c
docstr_tok: ["Applies","a","shift","of","facr","the","letter","denoted","by","c"]
code: def apply_rotation(self, c, facr):  # pragma: no cover
      """Applies a shift of facr  the letter denoted by c"""
      if c.isalpha():
          lower = ord("A") if c.isupper() else ord("a")
          c = chr(lower + ((ord(c) - lower + facr) % 26))
      return c
  
imports: import base64
  import binascii
  import random
  import re
  import string
  import base58
  import base62
  import cipheycore
  import cipheydists
  import nltk
  from nltk.tokenize.treebank import TreebankWordDetokenizer
label_desc: Use image node_id 7 for calling the encipher_crypto obj's underlying member method code with example usage: obj.apply_rotation(c, facr) and returns: c