Я столкнулся с действительно странной ошибкой с функцией 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