[Question] Mã hóa 1 chuỗi kí tự thành chuỗi số ?

1,265 views
Skip to first unread message

Thanh Quang

unread,
Feb 20, 2009, 9:24:26 PM2/20/09
to phpvi...@googlegroups.com
Chào các bác,

Mấy ngày nay suy nghĩ đủ cách mà không ra được cách nào hay về việc mã hóa 1 chuỗi ký tự thành một chuổi số khác, có chiều dài giới hạn.

Thí dụ như mình có chuổi số như sau : "/?act=products&type=view&cat=3&id=4"

Giờ mình muốn chuyển sang 1 chuổi số đã mã hóa, cái này là mình ví dụ nha : "345689012" (chiều dài chuỗi mã hóa càng ngắn càng tốt)

Với yêu cầu là : Cho dù chuổi kí tự có dài hơn hoặc ngắn hơn đi nữa thì khi mã hóa chiều dài chuỗi số vẫn giữ như cũ. Hàm này có khả năng decode chuỗi số ban đầu, vậy theo ý các bác, chúng ta có thể làm được không các bác ?

P/S: Mặc dù có thể dùng base64, hoặc chuyển sang HEX, hoặc Binary .... nhưng những thứ này lại không hay và không hợp ý tưởng của mình.

Cám ơn các bác nhiều lắm !
--
YM!: camauonline

Kaito Kid

unread,
Feb 20, 2009, 10:36:22 PM2/20/09
to phpvi...@googlegroups.com
Ý tưởng của bác thật thiên tài, chúc bác thành công và trở thành người đầu tiên phát minh ra giải thuật này!

Son Dat Giang

unread,
Feb 20, 2009, 11:01:02 PM2/20/09
to phpvi...@googlegroups.com
:D khó thiệt à nha, một kiểu siêu băm
---------------------------------
Best regards !
Giang Son Dat
Mobile: +84 988114164
Email giang...@gmail.com, giang...@yahoo.com


2009/2/20 Kaito Kid <ng.h...@gmail.com>

Quang Nguyễn Đăng

unread,
Feb 20, 2009, 11:13:31 PM2/20/09
to phpvi...@googlegroups.com
Cứ cho là bác dùng cách mã hoá gì ra được 1 chuỗi số nhưng rồi sẽ có cách để giải mã ngược lại chuỗi số đó. (Chặn ngay index như kiểu của mod_rewrite. rồi dùng 1 key thứ 2 để giải mã ngược lại string đã mã hoá) nói chung đây là 1 kiểu mã hoá nhưng nếu áp dụng cho web thì bác chắc là người đầu tiên. mà cũng ko hẳn thằng joomla nó cũng đã viết 1 cái chức năng link gợi nhớ. mình đăng ký abc --> index.php?module=abc&..... (cách này thấy tốt cho link tĩnh còn link động thì ko biết sao) Nhưng chúc bác cố gắn nghiên cứu đến thành công để mọi người được chiêm ngưỡng đoạn code đó... Chúc thành công.

2009/2/21 Son Dat Giang <giang...@gmail.com>



--
____________________________
Best Regard,

(Mr.) Nguyễn Đăng Quang
Website developer, Team Leader
0986991741
901180667 - Sacombank, Sở giao dịch TPHCM

Kaito Kid

unread,
Feb 21, 2009, 5:33:20 AM2/21/09
to phpvi...@googlegroups.com
Bác này nói 1 hồi không hiểu ý bác muốn nói gì. Ý của Thanh Quang là 1 giải thuật có các chức năng như sau:
+ Mã hóa 1 chuỗi (gồm cả ký tự và ký số) thành 1 chuỗi chỉ gồm ký số
+ Chuỗi đã mã hóa có chiều dài cố định (bất kể chiều dài của chuỗi ban đầu)
+ Có thể phục hồi chuỗi ban đầu từ chuỗi đã mã hóa.

Có 2 mâu thuẫn từ 3 yêu cầu của bạn:
+ Từ 1 tập lớn hơn, mã hóa về 1 tập nhỏ hơn, vậy thì chuỗi mã hóa phải có độ dài lớn hơn chuỗi ban đầu (tỷ lệ với độ lớn của 2 tập và giải thuật)
+ Để có thể phục hồi dữ liệu gốc, thì dữ liệu đã mã hóa phải có chiều dài đủ lớn, chứ không thể nào fixed length bất kể input (nếu ai đã học môn Digital Signal Processing sẽ biết công thức để có thể phục hồi dữ liệu gốc, mình học lâu quá nên quên mất rồi, công thức ngắn thôi :P ).

Như bạn thấy, MD5 là 1 giải thuật mà chiều dài của chuỗi mã hóa là cố định, nhưng nó là giải thuật mã hóa 1 chiều (mất mát dữ liệu), bạn không thể khôi phục dữ liệu gốc từ dữ liệu đã mã hóa. 1 số gỉai thuật mã hóa có mất mát dữ liệu như nén hình JPEG, nén audio thành mp3,...

Hix, hôm nay tự dưng dài dòng quá, khả năng lỗi càng cao, kiến thức hạn hẹp (chưa có bằng gì cả) nên có gì sai mong các bác chỉnh giúp.

Son Dat Giang

unread,
Feb 21, 2009, 6:27:47 AM2/21/09
to phpvi...@googlegroups.com
:D cái môn xử lí tín hiệu số em cũng đã học qua rồi. Công thức shanon ấy mà.

Theo công thức shanon thì để có thể phục hồi tín hiệu ban đầu, thì số lượng mẫu "trích" ra từ số mẫu ban đâu phải đạt được giới hạn nào đó.

Chứ còn đưa mọi thông tin về dạng một dãy số có độ dài cố định được và còn ... phục hồi được thì híc híc, em đã không phải mất mấy ngày download pes 2009.

---------------------------------
Best regards !
Giang Son Dat
Mobile: +84 988114164
Email giang...@gmail.com, giang...@yahoo.com


2009/2/21 Kaito Kid <ng.h...@gmail.com>

javanesevn

unread,
Feb 21, 2009, 10:52:21 AM2/21/09
to PHPVietnam
Đúng là yêu cầu để mã hóa thành chuỗi cố định khó thật.
Hay là cứ làm bình thường như Base64 nhưng sau khi có chuỗi kết quả sẽ
ánh xạ với một chuỗi cố định ngẫu nhiên duy nhất theo chiều dài bạn
mong muốn.

Ví dụ: http://www.aloha.rock/index.php?chuỗirútgọn từ đó bạn lấy
Base64 mã hóa


HTH

On 21 Tháng Hai, 11:24, Thanh Quang <quan...@gmail.com> wrote:
> Chào các bác,
>
> Mấy ngày nay suy nghĩ đủ cách mà không ra được cách nào hay về việc mã hóa 1
> chuỗi ký tự thành một chuổi số khác, có chiều dài giới hạn.
>

> Thí dụ như mình có chuổi số như sau : "*/?act=products&type=view&cat=3&id=4*


> "
>
> Giờ mình muốn chuyển sang 1 chuổi số đã mã hóa, cái này là mình ví dụ nha :

> "*345689012*" (chiều dài chuỗi mã hóa càng ngắn càng tốt)

Kaito Kid

unread,
Feb 21, 2009, 11:09:44 AM2/21/09
to phpvi...@googlegroups.com
Nếu vậy thì BASE64 chi vậy bạn? Map thẳng cái originate với cái random string cho rồi.

Thanh Quang

unread,
Feb 21, 2009, 11:59:09 AM2/21/09
to phpvi...@googlegroups.com
Đúng là ý tưởng của mình điên rồ thiệt ! :) Cám ơn các bác đã quan tâm. Chắc phải suy nghĩ một hướng khác để mã hóa mấy cái parameter lại ... hiện giờ thì đang bí :D

2009/2/21 Kaito Kid <ng.h...@gmail.com>

Kaito Kid

unread,
Feb 21, 2009, 12:10:59 PM2/21/09
to phpvi...@googlegroups.com
Thế ý bác chắc là giống của javanesevn nói chứ gì, chỉ là cần hash cái string lại thành 1 cái key thôi phải ko? Sao không dùng DB cho nhanh, key thì random cũng được, problem solved!

Thanh Quang

unread,
Feb 21, 2009, 12:36:56 PM2/21/09
to phpvi...@googlegroups.com
Thí dụ cái query string này, nó thay đổi tùy theo cat, id, và act "/?act=products&type=view&cat=3&id=4". thay vì dùng mod_rewrite thì cũng được, nhưng nhìn cũng chưa đã cho lắm, mình muốn chuyển cái chuỗi đó thành 1 chuỗi số, khi đó ở phía server mình decode lại và nhận lại cái biến $type, $id .v..v. ý mình là như vậy.

2009/2/21 Kaito Kid <ng.h...@gmail.com>



--
Website: http://blog.camauonline.net
YM!: camauonline

Kaito Kid

unread,
Feb 21, 2009, 1:34:47 PM2/21/09
to phpvi...@googlegroups.com
Such a waste of time.

drupal vietnam

unread,
Feb 26, 2009, 11:26:25 AM2/26/09
to phpvi...@googlegroups.com
Bạn thử ứng dụng Dictionary xem, lưu nó trong database.

Thân.

2009/2/21 Thanh Quang <qua...@gmail.com>

heobay

unread,
Feb 27, 2009, 11:25:19 PM2/27/09
to PHPVietnam
Mà vì sao lại phải là 1 chuỗi có số phần tử cố định nhỉ? Mình thấy các
link của blog yaho 360 vẫn mã hóa được đó, nhưng không biết số phần tử
có cố định không?

Ví dụ link thế này nè
http://blog.360.yahoo.com/blog-uDSS9_Elb62jOo.E.zhnnZI-;_ylt=AozvHjRQclCZQQNgrHxzVMisAOJ3?cq=1

Reply all
Reply to author
Forward
0 new messages