Fixes bad zero-prefix padding bug in older _int2bytes to pass all tests.
diff --git a/rsa/transform.py b/rsa/transform.py
index 9ba2fe7..9abc6ae 100644
--- a/rsa/transform.py
+++ b/rsa/transform.py
@@ -33,10 +33,7 @@
 import binascii
 from struct import pack
 from rsa import common
-from rsa._compat import is_integer, b, byte, get_word_alignment
-
-
-ZERO_BYTE = b('\x00')
+from rsa._compat import is_integer, b, byte, get_word_alignment, ZERO_BYTE, EMPTY_BYTE
 
 
 def bytes2int(raw_bytes):
@@ -74,14 +71,19 @@
         raise ValueError('Negative numbers cannot be used: %i' % number)
 
     # Do some bounds checking
-    needed_bytes = common.byte_size(number)
+    if number == 0:
+        needed_bytes = 1
+        raw_bytes = [ZERO_BYTE]
+    else:
+        needed_bytes = common.byte_size(number)
+        raw_bytes = []
+        
     if block_size > 0:
         if needed_bytes > block_size:
             raise OverflowError('Needed %i bytes for number, but block size '
                 'is %i' % (needed_bytes, block_size))
 
     # Convert the number to bytes.
-    raw_bytes = []
     while number > 0:
         raw_bytes.insert(0, byte(number & 0xFF))
         number >>= 8
@@ -90,9 +92,9 @@
     if block_size > 0:
         padding = (block_size - needed_bytes) * ZERO_BYTE
     else:
-        padding = b('')
+        padding = EMPTY_BYTE
 
-    return padding + b('').join(raw_bytes)
+    return padding + EMPTY_BYTE.join(raw_bytes)
 
 
 def bytes_leading(raw_bytes, needle=ZERO_BYTE):