JS en PHP encryption

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Hipska BE

Hipska BE

28/01/2008 20:41:00
Quote Anchor link
Ik zou php en javascript willen gebruiken voor encryptie en decryptie volgens het aes systeem (Rijndael). In php is dit dus al gelukt, maar ik zoek nog een goede versie om het ook in javascript te kunnen doen. Ik heb al een script gevonden, maar die levert andere gecodeerde text dan php.

Wie kan mij een javascript en/de cryptie scriptje vinden die samenwerkt met php?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
echo '<pre>'.PHP_EOL;

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
var_dump($text);

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
var_dump($crypttext);

$newtext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
var_dump(trim($newtext));

echo '</pre>';
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
string(42) "Meet me at 11 o'clock behind the monument."
string(64) ">,RhOJ7iO`z    `u$ ))C;@K&N/"
string(42) "Meet me at 11 o'clock behind the monument."
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
 
PHP hulp

PHP hulp

21/11/2024 13:57:32
 
Jan Koehoorn

Jan Koehoorn

28/01/2008 20:56:00
Quote Anchor link
Je zou in de PHP source moeten kijken hoe mcrypt_encript werkt, dan zou het in principe te doen moeten zijn. Waarom wil je eigenlijk PHP en JavaScript?
 
Hipska BE

Hipska BE

28/01/2008 21:16:00
Quote Anchor link
om bv te coderen in Javascript en te decoderen in php. maar met de scripts die ik al gevonden heb lukte dat niet.
 
Jan Koehoorn

Jan Koehoorn

28/01/2008 21:18:00
Quote Anchor link
Het coderen gebeurt aan een kant waar geen PHP ondersteuning is ???
 
Hipska BE

Hipska BE

28/01/2008 21:30:00
Quote Anchor link
ja ik weet wel wat ik wil hoor ;)

de te coderen text mag niet verstuurd worden over internet, dus is php niet aan te raden..
 
GaMer B

GaMer B

28/01/2008 21:40:00
Quote Anchor link
Hipska schreef op 28.01.2008 21:30:
ja ik weet wel wat ik wil hoor ;)

de te coderen text mag niet verstuurd worden over internet, dus is php niet aan te raden..


Ah, dus een client-side PHP functie. Tsja, dan zit er inderdaad niets anders op dan bijvoorbeeld de JavaScript variant van Sha1/MD5 te proberen of inderdaad de PHP source te bekoekeloeren.
 
Hipska BE

Hipska BE

28/01/2008 21:45:00
Quote Anchor link
joehoe lees eens,

ik wil met JS kunnen encrypten en met php dat stukje decrypten, niet een hash maken.
 
Sir Psycho Sexy

Sir Psycho Sexy

28/01/2008 22:46:00
Quote Anchor link
Als ik je help, word ik dan AOP?
 
Hipska BE

Hipska BE

28/01/2008 22:48:00
Quote Anchor link
huh?
 
Robert Deiman

Robert Deiman

28/01/2008 23:08:00
Quote Anchor link
Hipska schreef op 28.01.2008 21:30:
ja ik weet wel wat ik wil hoor ;)

de te coderen text mag niet verstuurd worden over internet, dus is php niet aan te raden..


Hipska schreef op 28.01.2008 21:45:
joehoe lees eens,

ik wil met JS kunnen encrypten en met php dat stukje decrypten, niet een hash maken.


Ben ik nu zo dom, of klopt er hier iets niet..

Je wilt het met JS (cliënt side) encrypten, omdat de te coderen text niet verstuurd word over internet.
Waarom wil je het dan in 's hemelsnaam wel op de server kunnen decrypten? Zonder het te verzenden, zal het nooit bij de server komen!
 
Hipska BE

Hipska BE

28/01/2008 23:14:00
Quote Anchor link
eh komaan, wil er nu eens iemand antwoorden op mijn vraag aub?

en ja ik weet wat ik wil, encrypten met JS en decrypten met php!! (2DE MAAL)
 
Jan Koehoorn

Jan Koehoorn

28/01/2008 23:18:00
Quote Anchor link
Ik ben eens in de PHP5 source gedoken, maar daar word je niet vrolijk van hoor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
    static void php_mcrypt_do_crypt (char* cipher, zval **key, zval **data, char *mode, zval **iv, int argc, int dencrypt, zval* return_value TSRMLS_DC) /* {{{ */
{
    char *cipher_dir_string;
    char *module_dir_string;
    int block_size, max_key_length, use_key_length, i, count, iv_size;
    unsigned long int data_size;
    int *key_length_sizes;
    char *key_s = NULL, *iv_s;
    char *data_s;
    MCRYPT td;
    
    MCRYPT_GET_INI

    td = mcrypt_module_open(cipher, cipher_dir_string, mode, module_dir_string);
    if (td == MCRYPT_FAILED) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_OPEN_MODULE_FAILED);
        RETURN_FALSE;
    }

    /* Checking for key-length */
    max_key_length = mcrypt_enc_get_key_size(td);
    if (Z_STRLEN_PP(key) > max_key_length) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Size of key is too large for this algorithm");
    }

    key_length_sizes = mcrypt_enc_get_supported_key_sizes(td, &count);
    if (count == 0 && key_length_sizes == NULL) { /* all lengths 1 - k_l_s = OK */
        use_key_length = Z_STRLEN_PP(key);
        key_s = emalloc(use_key_length);
        memset(key_s, 0, use_key_length);
        memcpy(key_s, Z_STRVAL_PP(key), use_key_length);
    }
else if (count == 1) {  /* only m_k_l = OK */
        key_s = emalloc(key_length_sizes[0]);
        memset(key_s, 0, key_length_sizes[0]);
        memcpy(key_s, Z_STRVAL_PP(key), MIN(Z_STRLEN_PP(key), key_length_sizes[0]));
        use_key_length = key_length_sizes[0];
    }
else { /* dertermine smallest supported key > length of requested key */
        use_key_length = max_key_length; /* start with max key length */
        for (i = 0; i < count; i++) {
            if (key_length_sizes[i] >= Z_STRLEN_PP(key) &&
                key_length_sizes[i] < use_key_length)
            {

                use_key_length = key_length_sizes[i];
            }
        }

        key_s = emalloc(use_key_length);
        memset(key_s, 0, use_key_length);
        memcpy(key_s, Z_STRVAL_PP(key), MIN(Z_STRLEN_PP(key), use_key_length));
    }

    mcrypt_free (key_length_sizes);
    
    /* Check IV */
    iv_s = NULL;
    iv_size = mcrypt_enc_get_iv_size (td);
    if (argc == 5) {
        if (iv_size != Z_STRLEN_PP(iv)) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE);
        }
else {
            iv_s = emalloc(iv_size + 1);
            memcpy(iv_s, Z_STRVAL_PP(iv), iv_size);
        }
    }
else if (argc == 4) {
        if (iv_size != 0) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to use an empty IV, which is NOT recommend");
            iv_s = emalloc(iv_size + 1);
            memset(iv_s, 0, iv_size + 1);
        }
    }


    /* Check blocksize */
    if (mcrypt_enc_is_block_mode(td) == 1) { /* It's a block algorithm */
        block_size = mcrypt_enc_get_block_size(td);
        data_size = (((Z_STRLEN_PP(data) - 1) / block_size) + 1) * block_size;
        data_s = emalloc(data_size);
        memset(data_s, 0, data_size);
        memcpy(data_s, Z_STRVAL_PP(data), Z_STRLEN_PP(data));
    }
else { /* It's not a block algorithm */
        data_size = Z_STRLEN_PP(data);
        data_s = emalloc(data_size);
        memset(data_s, 0, data_size);
        memcpy(data_s, Z_STRVAL_PP(data), Z_STRLEN_PP(data));
    }


    if (mcrypt_generic_init(td, key_s, use_key_length, iv_s) < 0) {
        php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Mcrypt initialisation failed");
        RETURN_FALSE;
    }

    if (dencrypt == MCRYPT_ENCRYPT) {
        mcrypt_generic(td, data_s, data_size);
    }
else {
        mdecrypt_generic(td, data_s, data_size);
    }

    
    RETVAL_STRINGL(data_s, data_size, 1);

    /* freeing vars */
    mcrypt_generic_end(td);
    if (key_s != NULL) {
        efree (key_s);
    }

    if (iv_s != NULL) {
        efree (iv_s);
    }

    efree (data_s);
}

?>
 
Jelmer -

Jelmer -

28/01/2008 23:54:00
Quote Anchor link
-> http://www.movable-type.co.uk/scripts/aes.html
-> http://home.versatel.nl/MAvanEverdingen/Code/

Dojo heeft toch ook een implementatie, verstopt in dojox._sql._crypto, maar die is afgeleid van die van Movable Type. Verder vond ik nog een implementatie van Mozilla, geen idee hoe het met de afhankelijkheden zit.

Het resultaat van 10 minuten googelen & zoeken op koders.
 
Hipska BE

Hipska BE

29/01/2008 17:59:00
Quote Anchor link
die 2 pagina's had ik natuurlijk al gezien... maar de output van die scripts lijkt helemaal niet op die van php ..
 
GaMer B

GaMer B

29/01/2008 18:06:00
Quote Anchor link
Ik hoop dat je het al in de gaten hebt, maar in feite zit je het HTTPS protocol na te bootsen; althans dat probeer je.

Waarom kies je niet voor het HTTPS protocol?
 
Hipska BE

Hipska BE

29/01/2008 18:13:00
Quote Anchor link
ehm ik wil gewoon met javascript een string coderen zodat ie te decoderen is met php.

ik boots geen http na. Is het nu te veel gevraagd om gewoon op mijn vraag te antwoorden en niet steeds offtopic te gaan?
 
Kumkwat Trender

Kumkwat Trender

29/01/2008 18:48:00
Quote Anchor link
kijk ook effe naar deze site's

http://www.chilkatsoft.com/js-aes-decrypt.asp
http://snippets.dzone.com/posts/show/4975



deze 2 zijn heel erg goed vind ik
iets met gmail aes decrypter
http://people.eku.edu/styere/Encrypt/JS-AES.html
en allemaal voorbeelden met aes .. ook zeer handig ..
http://www.langenhoven.com/code/emailencrypt/gmailencrypt.php

(offtopic: het manier waarop je dit vraagt, vindt ik dat het wat beter kan...)

edit:
http://www.hanewin.net/encrypt/aes/aes.htm
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 
Hipska BE

Hipska BE

29/01/2008 19:00:00
Quote Anchor link
ik snap het niet, meeste aes encrypters willen dat je text max. 16 bits is.

@peter: het voorbeeldje van je eerste link doet niets, tweede link is voor Ruby, derde link wil max maar 16 tekens encrypten.

@Jelmer: weet jij hoe dat voorbeeld werkt op die 2de link? ik vat het niet echt goed hoe het moet.
 
Kumkwat Trender

Kumkwat Trender

29/01/2008 19:06:00
Quote Anchor link
werkt deze niet?
http://www.chilkatsoft.com/js-aes-decrypt.asp

dat script moet wel werken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript" language="javascript">

function aesDecrypt()
{
    document.crypt2.UnlockComponent("Anything goes here.");
    
    // Crypt algorithms include "aes", "blowfish2", "twofish", "pki"
    document.crypt2.CryptAlgorithm = "aes";
    
    // Output encoding possibilities include "base64", "hex", "qp", or "url"
    document.crypt2.EncodingMode = "base64";
    
    // Key length can be 128, 192, or 256
    document.crypt2.KeyLength = 128;
    
    document.crypt2.SecretKey =
        document.crypt2.GenerateSecretKey(document.form1.password.value);
        
    document.form1.etx.value =
            document.crypt2.DecryptStringENC(document.form1.etx.value);
}

</script>
 
Slurp

Slurp

29/01/2008 19:10:00
Quote Anchor link
Werkt alleen in I.E..

Maar met aes moet alles in blokken van een bepaalde grootte anders werkt het algoritme niet.
Dus een tekst moet je opvullen met iets totdat een veelvoud is van de blok grootte.
Daarom 16 tekens => 128 bit ;)
 
Kumkwat Trender

Kumkwat Trender

29/01/2008 19:14:00
Quote Anchor link
ennn als je dit vervangt in 256?

// Key length can be 128, 192, or 256
document.crypt2.KeyLength = 256;
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.