Javascript encoding question

Giorgos Keramidas keramida at ceid.upatras.gr
Sat Jul 14 20:17:14 EEST 2007


On 2007-07-14 11:50, Theodore Lytras <thlytras at gmail.com> wrote:
> Στις Σάββατο 14 Ιούλιος 2007 02:17, ο/η Giorgos Keramidas έγραψε:
> > On 2007-07-14 00:13, Θοδωρής Λύτρας <thlytras at gmail.com> wrote:
> > > Προσπαθώ να φτιάξω μια εφαρμογούλα με χρήση PHP και Javascript. Σε κάποιο
> > > σημείο της κάνω χρήση της συνάρτησης sha1 της PHP (mcrypt module), καθώς
> > > και ενός αντίστοιχου έτοιμου javascript που υπολογίζει το sha1 hash.
> > >
> > > Αν τροφοδοτήσω τις δύο συναρτήσεις με κάποια αγγλική λέξη, δίνουν το ίδιο
> > > hash. Αν όμως τους δώσω μια ελληνική λέξη, δεν δίνουν το ίδιο hash.
> [snip, snip]
>
> > Δοκίμασε να μετατρέψεις το string σε byte-array
>
> Γίνεται αυτό σε javascript? Αν ναι πως? Στο βιβλίο "javascript bible" δεν
> υπάρχει κάτι σχετικό.

Εντάξει, δεν είναι κι ότι πιο 'fancy' αλλά υπάρχει πάντα το:

    var foo = "foobar";
    var bytes = new Array(foo.length());

    for (var i = 0; i < bytes; i++) {
            bytes[i] = foo.charCodeAt(i) & 0xff;
    }

> > και τύπωσε τα bytes που έχει κάθε φορά.  Αν είναι διαφορετικά (που
> > θά 'πρεπε να είναι), τότε είναι λογικό το sha1 hash να είναι
> > διαφορετικό:
>
> Γιατί πρέπει να είναι διαφορετικά αν έχουν το ίδιο encoding? Και πως
> θα μπορέσω να τα εναρμονίσω αυτά, ώστε οι δύο συναρτήσεις σε
> javascript και php να δίνουν το ίδιο sha1?

Γιατί δεν είμαι σίγουρος ότι έχουν το ίδιο encoding.  Δείξε μας τον
κώδικα και σε PHP και σε JavaScript, και λογικά κάτι θα βρούμε :)

> > $ echo τεστ | iconv -t utf-8 | sha1
> > 2dc49218330f983c454d75492b98d3abdade2759
> > $ echo τεστ | sha1
> > e697010e9e6f771b59f1bcebb43186454ca829e7
> > $
>
> Οι πρώτες δύο βγάζουν error στο suse μου, οι επόμενες δύο δουλεύουν αν αλλάξω
> το sha1 με sha1sum. Όμως μου δίνουν το ίδιο hash που βγάζει σε utf8 -
> προφανώς η κονσόλα μου είναι utf8 enabled, σωστά?

Σωστά.  Εμένα ήταν iso8859-7 το 'τεστ' :)




More information about the Linux-greek-users mailing list