Странная ошибка шифрования Laravel EncryptString - PullRequest
0 голосов
/ 21 октября 2018

Я столкнулся с действительно странной ошибкой с функцией Laravel EncryptString, любопытно, если у кого-нибудь есть идеи, что не так.

По сути, я шифрую письма в PHP с помощью Laravel, а затем расшифровываю позжеэто и с Laravel и с Python.Код Laravel, кажется, работает нормально, и код Python отлично работает для 99% моих тестовых случаев, НО он вылетает всякий раз, когда я использую свое собственное доменное имя в электронном письме, которое я шифрую.

Мой код:

public function encryptEmail(Request $request) {
    if (!Auth::check() && !Auth::viaRemember()) {
            return redirect()->to('/login');
    }
    $this->validate($request, [
                'email' => 'bail|required|email',
    ]);
    $emailToEncrypt = $request->request->get('email');
    $encryptedEmail = Crypt::encryptString($emailToEncrypt);
    $email = Emails::where('accountId', Auth::id())->first();
    $email->val = $encryptedEmail;
    $email->save();

Проблема: все отлично работает, когда я шифрую электронную почту НЕ с моего собственного домена, на котором работает веб-сервер.

Пример:

 string in form           decrypt PHP          decrypt Python
'test@gmail.com' =>     'test@gmail.com',    'test@gmail.com'
'myEmail@icloud.com' => 'myEmail@icloud.com' 'myEmail@icloud.com'
'other@hotmail.com' =>  'other@hotmail.com'  'other@hotmail.com'
'me@mydomain.com' =>    'me@mydomain.com'    'me@my'

AsВы можете видеть, что, как только он попадает в мой домен, кажется, что шифрование строк отключено, я проверил, что вся строка передается в EncryptString, так что на самом деле не уверен, что заставит код Python вызывать сбои в электронных письмах.с нашим доменом.

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ:

Python-код, где enc - это зашифрованные данные Laravel

def decrypt(enc):
    key = base64.b64decode("MyKey=")
    dataDict = json.loads(base64.b64decode(enc))

    decrypter = AES.new(key, AES.MODE_CBC, base64.b64decode(dataDict['iv']))
    data = decrypter.decrypt(base64.b64decode(dataDict['value']))

    try:
        print(data.decode())
        return data.decode()
    except Exception as e:
        return None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...