pkcs7.py 668 B

1234567891011121314151617181920212223
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. from library import to_binary, byte2int
  4. class PKCS7Encoder(object):
  5. block_size = 32
  6. @classmethod
  7. def encode(cls, text):
  8. length = len(text)
  9. padding_count = cls.block_size - length % cls.block_size
  10. if padding_count == 0:
  11. padding_count = cls.block_size
  12. padding = to_binary(chr(padding_count))
  13. return text + padding * padding_count
  14. @classmethod
  15. def decode(cls, decrypted):
  16. padding = byte2int(decrypted[-1])
  17. if padding < 1 or padding > 32:
  18. padding = 0
  19. return decrypted[:-padding]