Defuse\Crypto\Crypto::encrypt PHP Method

encrypt() public static method

Encrypts a string with a Key.
public static encrypt ( string $plaintext, Defuse\Crypto\Key $key, boolean $raw_binary = false ) : string
$plaintext string
$key Defuse\Crypto\Key
$raw_binary boolean
return string
    public static function encrypt($plaintext, Key $key, $raw_binary = false)
    {
        return self::encryptInternal($plaintext, KeyOrPassword::createFromKey($key), $raw_binary);
    }

Usage Example

コード例 #1
2
 /**
  * High-level tests of Crypto operations.
  *
  * @throws Ex\EnvironmentIsBrokenException
  */
 private static function testEncryptDecrypt()
 {
     $key = Key::createNewRandomKey();
     $data = "EnCrYpT EvErYThInG";
     // Make sure encrypting then decrypting doesn't change the message.
     $ciphertext = Crypto::encrypt($data, $key, true);
     try {
         $decrypted = Crypto::decrypt($ciphertext, $key, true);
     } catch (Ex\WrongKeyOrModifiedCiphertextException $ex) {
         // It's important to catch this and change it into a
         // Ex\EnvironmentIsBrokenException, otherwise a test failure could trick
         // the user into thinking it's just an invalid ciphertext!
         throw new Ex\EnvironmentIsBrokenException();
     }
     if ($decrypted !== $data) {
         throw new Ex\EnvironmentIsBrokenException();
     }
     // Modifying the ciphertext: Appending a string.
     try {
         Crypto::decrypt($ciphertext . 'a', $key, true);
         throw new Ex\EnvironmentIsBrokenException();
     } catch (Ex\WrongKeyOrModifiedCiphertextException $e) {
         /* expected */
     }
     // Modifying the ciphertext: Changing an HMAC byte.
     $indices_to_change = [0, Core::HEADER_VERSION_SIZE + 1, Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + 1, Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + Core::BLOCK_BYTE_SIZE + 1];
     foreach ($indices_to_change as $index) {
         try {
             $ciphertext[$index] = \chr((\ord($ciphertext[$index]) + 1) % 256);
             Crypto::decrypt($ciphertext, $key, true);
             throw new Ex\EnvironmentIsBrokenException();
         } catch (Ex\WrongKeyOrModifiedCiphertextException $e) {
             /* expected */
         }
     }
     // Decrypting with the wrong key.
     $key = Key::createNewRandomKey();
     $data = 'abcdef';
     $ciphertext = Crypto::encrypt($data, $key, true);
     $wrong_key = Key::createNewRandomKey();
     try {
         Crypto::decrypt($ciphertext, $wrong_key, true);
         throw new Ex\EnvironmentIsBrokenException();
     } catch (Ex\WrongKeyOrModifiedCiphertextException $e) {
         /* expected */
     }
     // Ciphertext too small.
     $key = Key::createNewRandomKey();
     $ciphertext = \str_repeat('A', Core::MINIMUM_CIPHERTEXT_SIZE - 1);
     try {
         Crypto::decrypt($ciphertext, $key, true);
         throw new Ex\EnvironmentIsBrokenException();
     } catch (Ex\WrongKeyOrModifiedCiphertextException $e) {
         /* expected */
     }
 }
All Usage Examples Of Defuse\Crypto\Crypto::encrypt