Skip to content

Instantly share code, notes, and snippets.

@juanparati
Created October 12, 2017 11:46
Show Gist options
  • Save juanparati/f2f1afbd8f5b7fe16248e48020babd34 to your computer and use it in GitHub Desktop.
Save juanparati/f2f1afbd8f5b7fe16248e48020babd34 to your computer and use it in GitHub Desktop.
Laravel decrypt implementation as MySQL function
CREATE DEFINER=`%`@`%` FUNCTION `LARAVEL_DECRYPT`(
`encstr` TEXT,
`raw_key` VARCHAR(255)
)
RETURNS varchar(255) CHARSET utf8 COLLATE utf8_unicode_ci
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE decrypted VARCHAR(255);
SET decrypted = AES_DECRYPT(FROM_BASE64(JSON_UNQUOTE(JSON_EXTRACT(CONVERT(FROM_BASE64(encstr) USING utf8), '$.value'))), FROM_BASE64(raw_key), FROM_BASE64(JSON_UNQUOTE(JSON_EXTRACT(CONVERT(FROM_BASE64(encstr) USING utf8), '$.iv'))));
SET decrypted = SUBSTRING_INDEX(decrypted, ':', -1);
SET decrypted = SUBSTRING(decrypted, 2, CHAR_LENGTH(decrypted) - 3);
return (decrypted);
END
@jinseokoh
Copy link

it doesn't seem to work. can you elaborate more on this? thanks.

@masbug
Copy link

masbug commented Jul 4, 2018

It's missing delimiter change.

DELIMITER //
CREATE DEFINER=`%`@`%` FUNCTION `LARAVEL_DECRYPT`(
	`encstr` TEXT,
	`raw_key` VARCHAR(255)
)
RETURNS varchar(255) CHARSET utf8 COLLATE utf8_unicode_ci
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
BEGIN
	DECLARE decrypted VARCHAR(255) CHARSET utf8 COLLATE utf8_unicode_ci;
	SET decrypted = AES_DECRYPT(FROM_BASE64(JSON_UNQUOTE(JSON_EXTRACT(CONVERT(FROM_BASE64(encstr) USING utf8), '$.value'))), FROM_BASE64(raw_key), FROM_BASE64(JSON_UNQUOTE(JSON_EXTRACT(CONVERT(FROM_BASE64(encstr) USING utf8), '$.iv'))));
	SET decrypted = SUBSTRING_INDEX(decrypted, ':', -1);
	SET decrypted = SUBSTRING(decrypted, 2, CHAR_LENGTH(decrypted) - 3);
	return (decrypted);
END
//
DELIMITER ;

@talenteo-dev
Copy link

it's return null for me, any help please ?

@juanparati
Copy link
Author

@adel-chelabi96 : Are you using MariaDB? (MariaDB doesn't support IV: https://jira.mariadb.org/browse/MDEV-11476)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment