Ben üzerinde çalışıyorum bir proje için, ben NSIS ve PHP arasında uyumlu bir şekilde Blowfish kullanarak bir dize şifrelemek ve şifresini çözmek gerekir.
Şu anda ben NSIS ve PHP ile mcrypt
kütüphane için Blowfish++ plugin kullanıyorum. Sorun ben ikisini aynı çıktıyı almak değil, olduğunu.
En NSIS Blowfish + + eklentisi ile başlayalım. Temelde API:
; Second argument needs to be base64 encoded
; base64_encode("12345678") == "MTIzNDU2Nzg="
blowfish::encrypt "test@test.com***" "MTIzNDU2Nzg="
Pop $0 ; 0 on success, 1 on failure
Pop $1 ; encrypted message on success, error message on failure
Orada vb CBC, ECB, CFB, olsun hiç bahsedilmemesi ve ben mostly undocumented source okuyarak söylemek mümkün Blowfish'ten yeterince aşina değilim. Ben PHP docs for mcrypt
ECB bir IV a> ihtiyacı olmadığını söylüyor çünkü ECB varsayıyorum.
Ben de Blowfish + + eklenti Base64 (ben neden emin değilim) ikinci argüman şifrelemek deşifre olacağı kaynak kodunu okuyarak öğrendim. Ayrıca Base64 kodlanmış dize döndürür.
Şeyler PHP tarafında için, temelde şifrelemek için bu kodu kullanıyorum:
$plainText = "test@test.com***";
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_ECB, '');
$iv = '00000000'; // Show not be used anyway.
$key = "12345678";
$cipherText = "";
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
$cipherText = mcrypt_generic($cipher, $plainText);
mcrypt_generic_deinit($cipher);
}
echo base64_encode($cipherText);
Ben bütün bunları yapmak Ancak, ben her gelen şu çıktıyı alıyorum:
NSIS: GyCyBcUE0s5gqVDshVUB8w==
PHP: BQdlPd19zEkX5KT9tnF8Ng==
Ben yanlış ne yapıyorum? NSIS eklenti ECB kullanarak değil mi? Değilse, o IV var ne için kullanıyor?