gpt4 book ai didi

php - 在 Laravel 中解密在 MySQL 中使用 AES_ENCRYPT 加密的数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:41 24 4
gpt4 key购买 nike

我有一个正在与 Laravel 集成的遗留数据库。

数据库中的一些 varbinary 字段在遗留应用程序的原始查询中使用 AES_ENCRYPT 存储。在 Laravel 的 Eloquent 模型中,我想编写一个访问器,在我需要时解密这些数据,而无需对数据库进行额外的查询。我该怎么做?

旧版应用按如下方式加密数据:AES_DECRYPT(first_name, ?) 在哪里?引用作为 sha1('mykeyhere') 传入的 key 。

有什么想法吗?

最佳答案

没有人应该做过导致这种情况的任何事情,但这里是如何使用未弃用的 API 对其进行解码。

/**
* @param string $crypted Un-encoded input
* @param string $key Key string provided to mysql AES_ENCRYPT();
* @return string
**/
function mysql_aes_decrypt($crypted, $key) {
// mysql will happily fudge your key for you, so we do too
$keylen = strlen($key);
if( $keylen < 16 ) {
$key = str_pad($key, 16, "\0");
} else if( $keylen > 16 ) {
$key = substr($key, 0, 16);
}
return openssl_decrypt($crypted, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
}

$plain = 'foo';
$key = 'bar';
// SELECT AES_ENCRYPT('foo', 'bar')
$crypted = hex2bin('93F254924801B8B0F000571DFD8C4A5E');

var_dump( mysql_aes_decrypt($crypted, $key) ); // string(3) "foo"

关于php - 在 Laravel 中解密在 MySQL 中使用 AES_ENCRYPT 加密的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49287038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com