Skip to content

Instantly share code, notes, and snippets.

@olooney
Created December 19, 2011 17:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olooney/1498025 to your computer and use it in GitHub Desktop.
Save olooney/1498025 to your computer and use it in GitHub Desktop.
padding/unpadding per PKCS7 or PKCS5.
# padding/unpadding per PKCS7 or PKCS5.
class PKCS7(object):
def __init__(self, block_size):
self.block_size = block_size
def pad(self, string):
padding_number = self.block_size - len(string) % self.block_size
if padding_number == self.block_size:
return string
padding = chr(padding_number) * padding_number
return string + padding
def unpad(self, string):
if not string: return string
if len(string) % self.block_size:
raise TypeError('string is not a multiple of the block size.')
padding_number = ord(string[-1])
if padding_number >= self.block_size:
return string
else:
if all( padding_number == ord(c) for c in string[-padding_number:] ):
return string[0:-padding_number]
else:
return string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment