                           self.__class__.__name__)
  
      def salt(self):
          """Generate a cryptographically secure nonce salt in ASCII."""
          # 12 returns a 71-bit value, log_2((26+26+10)^12) =~ 71 bits
          return get_random_string(12)
  
      def verify(self, password, encoded):
          """Check if the given password is correct."""
          raise NotImplementedError('subclasses of BasePasswordHasher must provide a verify() method')
  
 
</s> remove #   def get_random_string(length, allowed_chars='...'):
def get_random_string(length=NOT_PROVIDED, allowed_chars=(
    'abcdefghijklmnopqrstuvwxyz'
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
)):
 </s> add #   def get_random_string(length, allowed_chars=RANDOM_STRING_CHARS):
def get_random_string(length=NOT_PROVIDED, allowed_chars=RANDOM_STRING_CHARS): </s> remove     constant_time_compare, get_random_string, pbkdf2,
 </s> add     RANDOM_STRING_CHARS, constant_time_compare, get_random_string, pbkdf2,
        # 12 returns a 71-bit value, log_2(len(RANDOM_STRING_CHARS)^12) =~ 71 bits
        return get_random_string(12, RANDOM_STRING_CHARS)
                           self.__class__.__name__)
  
      def salt(self):
          """Generate a cryptographically secure nonce salt in ASCII."""
        # 12 returns a 71-bit value, log_2(len(RANDOM_STRING_CHARS)^12) =~ 71 bits
        return get_random_string(12, RANDOM_STRING_CHARS)
        # 12 returns a 71-bit value, log_2(len(RANDOM_STRING_CHARS)^12) =~ 71 bits
        return get_random_string(12, RANDOM_STRING_CHARS)
  
      def verify(self, password, encoded):
          """Check if the given password is correct."""
          raise NotImplementedError('subclasses of BasePasswordHasher must provide a verify() method')
  
keep keep keep keep replace replace keep keep keep keep keep
 Refs #31358 -- Added constant for get_random_string()'s default alphabet. 
django/contrib/auth/hashers.py