AES, MySQL ve Baş ağrısı

2 Cevap php

Ben bir e-ticaret sitesi için bir ödeme sayfası üzerinde çalışıyorum. Site, insanlar girdi kredi kartı bilgileri dedi ve bir AES şifrelenmiş biçimde sırayla kaydedilir. Onlar desteklenen tüm VISA iken bu iyi çalıştı. Şimdi MasterCard ve Discover (16 basamaklı sayılar) destekleyen, artık çalışıyor. Insert sorgusu bu gibi görünüyor:

"insert into order_master set ccnum = AES_ENCRYPT(:ccnum, 'password') ...";

ben de alternatif biçimi denedim:

"insert into order_master (ccnum, ...) values (AES_ENCRYPT(:ccnum, 'password')..)";

Hem boşuna. Birisi ben yanlış yapıyorum ne kadar doğru yönde bana gelin dener misin? Girişleri değerleri vb ve hiçbir şey, doğru takıldığından emin olmak için sorgulamak tükürmek gibi ben şimdiye kadar gitti. oldukça sinir bozucu ve ben orada birisi bana yardımcı olabilir umut ediyorum. teşekkürler!

2 Cevap

(Şifreleme önce 16 karakterleri ile tek kart numaraları) ikili tüm verileri yakalamak için başarısız oldu - olarak çıktı, müşteri varchar (20) olarak ayarlanmış sütunun veri türü vardı. Onu 255 uzunluğunu değiştirmek vardı ve şimdi harika çalışıyor. Lütfen yardım / tüm önerileri için teşekkür ederiz!

Ben senin sql ile yanlış anyting görmek ama mysql documentation adlı ... yok

If AES_DECRYPT() detects invalid data or incorrect padding, it returns NULL. However, it is possible for AES_DECRYPT() to return a non-NULL value (possibly garbage) if the input data or the key is invalid.

Eğer bir değer elde şifresini çözebilir tarafından açıklıyor .. ama şifrelemek ve bir null değeri döndürülür alırsanız, iki giriş değerleri biri muhtemelen null.