diff --git a/docs/x509.rst b/docs/x509.rst
index 8a85561..d09651f 100644
--- a/docs/x509.rst
+++ b/docs/x509.rst
@@ -275,7 +275,7 @@
 
             >>> for ext in cert.extensions:
             ...     print(ext)
-            <Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectKeyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(value=580184241bbc2b52944a3da510721451f5af3ac9)>)>
+            <Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectKeyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(digest='X\x01\x84$\x1b\xbc+R\x94J=\xa5\x10r\x14Q\xf5\xaf:\xc9')>)>
             <Extension(oid=<ObjectIdentifier(oid=2.5.29.19, name=basicConstraints)>, critical=True, value=<BasicConstraints(ca=True, path_length=None)>)>
 
 X.509 CSR (Certificate Signing Request) Object
@@ -590,12 +590,6 @@
 
         The binary value of the identifier.
 
-    .. attribute:: hexdigest
-
-        :type: :term:`text`
-
-        The hexadecimal value of the identifier.
-
 
 Object Identifiers
 ~~~~~~~~~~~~~~~~~~
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index df37934..d635d4a 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -353,12 +353,8 @@
 
     digest = utils.read_only_property("_digest")
 
-    @property
-    def hexdigest(self):
-        return binascii.hexlify(self.digest).decode("ascii")
-
     def __repr__(self):
-        return "<SubjectKeyIdentifier(value={0})>".format(self.hexdigest)
+        return "<SubjectKeyIdentifier(digest={0!r})>".format(self.digest)
 
     def __eq__(self, other):
         if not isinstance(other, SubjectKeyIdentifier):
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 5728a89..194b18c 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -9,6 +9,8 @@
 
 import pytest
 
+import six
+
 from cryptography import x509
 from cryptography.hazmat.backends.interfaces import RSABackend, X509Backend
 
@@ -135,22 +137,29 @@
 
 class TestSubjectKeyIdentifier(object):
     def test_properties(self):
-        hexdigest = "092384932230498bc980aa8098456f6ff7ff3ac9"
-        value = binascii.unhexlify(hexdigest.encode('ascii'))
+        value = binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9")
         ski = x509.SubjectKeyIdentifier(value)
         assert ski.digest == value
-        assert ski.hexdigest == hexdigest
 
     def test_repr(self):
         ski = x509.SubjectKeyIdentifier(
             binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9")
         )
         ext = x509.Extension(x509.OID_SUBJECT_KEY_IDENTIFIER, False, ski)
-        assert repr(ext) == (
-            "<Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectKey"
-            "Identifier)>, critical=False, value=<SubjectKeyIdentifier("
-            "value=092384932230498bc980aa8098456f6ff7ff3ac9)>)>"
-        )
+        if six.PY3:
+            assert repr(ext) == (
+                "<Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectK"
+                "eyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(d"
+                "igest=b\'\\t#\\x84\\x93\"0I\\x8b\\xc9\\x80\\xaa\\x80\\x98Eoo"
+                "\\xf7\\xff:\\xc9\')>)>"
+            )
+        else:
+            assert repr(ext) == (
+                "<Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectK"
+                "eyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(d"
+                "igest=\'\\t#\\x84\\x93\"0I\\x8b\\xc9\\x80\\xaa\\x80\\x98Eoo"
+                "\\xf7\\xff:\\xc9\')>)>"
+            )
 
     def test_eq(self):
         ski = x509.SubjectKeyIdentifier(
@@ -402,7 +411,6 @@
         ski = ext.value
         assert ext is not None
         assert ext.critical is False
-        assert ski.hexdigest == "580184241bbc2b52944a3da510721451f5af3ac9"
         assert ski.digest == binascii.unhexlify(
             b"580184241bbc2b52944a3da510721451f5af3ac9"
         )
