diff --git a/cipher/cipher.go b/cipher/cipher.go
index 06d8242..e560d71 100644
--- a/cipher/cipher.go
+++ b/cipher/cipher.go
@@ -17,7 +17,6 @@
 	"crypto/aes"
 	"crypto/cipher"
 	"fmt"
-	"sync"
 )
 
 type Mode string
@@ -72,28 +71,17 @@
 // Create a new AesCipher object with the specified encryption mode and padding algorithm.
 func CreateAesCipher(key []byte) (*AesCipher, error) {
 	a := &AesCipher{
-		mutex: &sync.RWMutex{},
+		key: key,
 	}
-	if err := a.SetKey(key); err != nil {
-		return nil, err
-	}
-	return a, nil
+	var err error
+	a.block, err = aes.NewCipher(key)
+	return a, err
 }
 
 // An object to perform AES encryption/decryption.
 type AesCipher struct {
 	key   []byte
 	block cipher.Block
-	mutex *sync.RWMutex
-}
-
-// Set/Change the AES key, accepted key's bit-size is 128/192/256.
-func (a *AesCipher) SetKey(key []byte) (err error) {
-	a.mutex.Lock()
-	defer a.mutex.Unlock()
-	a.key = key
-	a.block, err = aes.NewCipher(key)
-	return err
 }
 
 // Encrypt the plaintext. Padding is performed before encryption, so the
@@ -116,15 +104,11 @@
 	ciphertext = text
 
 	// encrypt
-	a.mutex.RLock()
-	block := a.block
-	a.mutex.RUnlock()
-
 	switch mode {
 	case ModeEcb:
-		size := block.BlockSize()
+		size := a.block.BlockSize()
 		for len(text) > 0 {
-			block.Encrypt(text, text)
+			a.block.Encrypt(text, text)
 			text = text[size:]
 		}
 	}
@@ -148,9 +132,7 @@
 	}
 
 	// encrypt
-	a.mutex.RLock()
 	block := a.block
-	a.mutex.RUnlock()
 
 	switch mode {
 	case ModeEcb:
diff --git a/cipher/cipher_test.go b/cipher/cipher_test.go
index 0bdde75..0f999a7 100644
--- a/cipher/cipher_test.go
+++ b/cipher/cipher_test.go
@@ -83,18 +83,6 @@
 			})
 		})
 
-		It("SetKey", func() {
-			key := make([]byte, 16)
-			plaintext := []byte("aUWQKgAwmaR0p2kY")
-			ciphertext := []byte{218, 53, 247, 87, 119, 80, 231, 16, 125, 11, 214, 101, 246, 202, 178, 163, 202, 102, 146, 245, 79, 215, 74, 228, 17, 83, 213, 134, 105, 203, 31, 14}
-			c, err := cipher.CreateAesCipher(key)
-			Expect(err).Should(Succeed())
-			key = []byte{2, 122, 212, 83, 150, 164, 180, 4, 148, 242, 65, 189, 3, 188, 76, 247}
-			Expect(c.SetKey(key)).Should(Succeed())
-			Expect(c.Encrypt(plaintext, cipher.ModeEcb, cipher.PaddingPKCS5)).Should(Equal(ciphertext))
-			Expect(c.Decrypt(ciphertext, cipher.ModeEcb, cipher.PaddingPKCS7)).Should(Equal(plaintext))
-		})
-
 		It("Invalid Parameters", func() {
 			_, err := cipher.CreateAesCipher(make([]byte, 15))
 			Expect(err).ToNot(Succeed())
