Source code for wheezy.security.crypto.padding

""" ``padding`` module.

    see http://www.di-mgt.com.au/cryptopad.html
"""

from wheezy.security.crypto.comp import chr
from wheezy.security.crypto.comp import ord


def pad(s, block_size):
[docs] """ Pad with zeros except make the last byte equal to the number of padding bytes. The convention with this method is usually always to add a padding string, even if the original plaintext was already an exact multiple of `block_size` bytes. ``s`` - byte string. """ n = len(s) % block_size if n > 0: n = block_size - n else: n = block_size return (chr(0) * (n - 1)).join((s, chr(n))) def unpad(s, block_size):
[docs] """ Strip right by the last byte number. ``s`` - byte string. """ n = len(s) if n == 0: return None n = n % block_size if n > 0: return None n = ord(s[-1]) if n > block_size: return None return s[:-n]