Vajay Attila személyes weboldala

BlowfishOnline

2018-08-23

Beüzemelésre került az BlowfishOnline segédprogram, amely szövegek titkosítását és visszafejtését valósítja meg. Az eredeti cél az volt, hogy demonstráljam az Angularban elkódolt szövegek PostgreSQL-ben történő visszafejtését. A szolgáltatás elérhető ITT.

A projekt Angular felhasználásával valósult meg. A kódoláshoz a egoroof-blowfish modult használtam.

Inicializáló vektornak az „00000000” szöveget használom. Ez a visszafejtésnél fontos. A titkosított tömb base64-el tovább van konvertálva, hogy szövegként lehessen kezelni.

Példa:
Szöveg elkódolása a BlowfishOnline segítségével

Jelszó Elkódolandó szöveg Titkosított és base64-re kódolt szöveg
example Hello World! 3+B5zcjJTBvyI6DXACm9Eg==

Az elkódolt szöveg dekódolása PostgreSQL alatt:

A visszakódoláshoz szükséges a pgcrypto kiterjesztés betöltése. Az alábbi függvény megvizsgálja, hogy a kiterjesztés be van-e töltve és ha kell betölti.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE OR REPLACE FUNCTION "CreatePGCrypto"()
RETURNS BOOLEAN
LANGUAGE plpgsql
AS $function$
DECLARE
retval BOOL;
pgcrypto_version TEXT;
BEGIN
retval=TRUE;

SELECT INTO pgcrypto_version installed_version FROM
pg_available_extensions
WHERE name='pgcrypto' AND installed_version IS NOT NULL;
IF pgcrypto_version IS NULL THEN
CREATE EXTENSION pgcrypto;
END IF;

RETURN retval;
END;

$function$;

/* meghívás */
SELECT "CreatePGCrypto"();

Ezután már elvégezhetjük a visszafejtést:

1
2
3
4
5
6
7
8
9
10
11
12
13
select 
convert_from( /*a visszafejtett tömb konvertálása UTF8 stringgé*/
decrypt_iv( /*a titkosított tömb visszafejtése egy tömbbe*/
decode( /*base64 tömbbé alakítása*/
'3+B5zcjJTBvyI6DXACm9Eg==',
'base64'
),
'example',
'00000000',
'bf-cbc/pad:pkcs'
),
'UTF8'
);

Szöveg elkódolása PostgreSQL alatt:

Példa:

Jelszó Elkódolandó szöveg
example Hello World from PG!

Az elkódolás:

1
2
3
4
5
6
7
8
9
10
11
select encode(
encrypt_iv(
'Hello World from PG!',
'example',
'00000000',
'bf-cbc/pad:pkcs'
),
'base64'
);

/* return=3+B5zcjJTBuNaNLFG3cJQq6YeSV/g9d7 */

Az elkódolt szöveg visszafejtése a BlowfishOnline segítségével:
Az elkódolt szöveg visszafejtése a BlowfishOnline segítségével