Dizge olarak şifrelemek dizi

7 Cevap php

Ben güvenli bir tanımlama bazı veri depolamak böylece ben, bir dize olarak bir dizi kodlamak için iki yönlü şifreleme algoritması arıyorum. Algoritması sadece dizi implode olmamalı, ben çok karartılmış olmak istiyorum. Benim veri yazdırılabilir tüm karakterleri içeriyor.

Bir şey bir bağlantı yeterli olacaktır, ben sadece Google'da bir şey kazıp için görünmüyor olabilir. Belki sadece bazı karanlık karakteri ile dizi implode gerekir, ve sonra bir şekilde şifrelemek? Ama bunu şifrelemek için hangi yöntemi emin değilim ... çok güvenli yok, çerez veri that duyarlı değildir.

Ah ... evet, şifreleme algoritması bana bir anahtar / tuz kullanmasına izin gerekir. MCRYPT_ENCRYPT dağınık uzun sonuçlarını geri vermek için, ama belki ben doğru şifreyi kullanarak değilim görünüyor. Basit şifre (kısa temiz dizeleri üretir) hangisi?

7 Cevap

serialize() bir dizeye bir diziden bilgilerinizi alacak - ve size sadece şaşırtmaca istiyorsanız base64_encode() aracılığıyla geçebileceği - güvenlik değil ama.

Bazı güvenlik istiyorsanız - mcrypt ve balon balığına içine bakmak: blowfish example

Gnarf cevabı dayanarak, bu hile yapmak gerekir:

function encode_arr($data) {
	return base64_encode(serialize($data));
}

function decode_arr($data) {
	return unserialize(base64_decode($data));
}

Her ihtimale başkasının bir kopyalama ve yapıştırma bir çözüm istiyor.

serialize() bir dizeye dizi dönüştürmek ve unserialize () bir diziye geri çevirmek için kullanın. O kadar implode üstün ve manuel ayrıştırma bulunuyor. (Herhangi bir programcı ile görebilirsiniz) basit şaşırtmaca için basit base64 kodlaması kullanabilirsiniz, ama sen gerçekten bazı gerçek güvenlik sağlamak için mcrypt kütüphane içine bakmak gerekir.

En iyi şey, muhtemelen hiç bir tanımlama dizisini saklamak değil olacaktır. Hiç gördüğü tüm kullanıcı bir oturum kimliği böylece yerine bir oturum değişkeni dizi saklayın. Sadece oturum süresince dizi gerekiyorsa tabii ki bu sadece çalışır.

Bu "beni hatırla" cookie için, yani bu kimlik doğrulaması ile ilgili olduğunu Yorumlarınız söylüyorlar. Bu durumda, dizide hassas bir şey saklamak yok. Sadece yerine tuzlu karma depolamak ve kullanmak. Örneğin, çerez (veritabanı parola karma + ip adresi aralığında) kullanıcı adı ve tuzlu karma içerebilir. Kullanıcı sitede geldiğinde, çerez okumak ve veritabanındaki bilgilerden karma oluşturmak. Bu çerez karma eşleşirse, otomatik olarak onu oturum açın. Değilse, çerezi silmek ve hiç olmamış gibi davran.

Bu şekilde çerez hiçbir hassas verilerin depolandığı ve bunu şifrelemek gerekmez.

Ben sadece encrypt (so-so güvenlik için) DES ya da bir şey Blowfish kullanarak ya da daha sonra içeriye patlatmak istiyorum ...

Güvenlik meselesidir dizi kodlamak için JSON ve ardından rot13 dize ;-) etmezse

Şifresini çözmek için ters aynı - XOR-ing dize dizi deposunda çıkan karakter de bütün elemanları deneyin.

Güvenli ya düz base64 veya rot13 olması gerek yoksa, bakarak değer olabilir.