Skip to main content

Posts

[crypto] md5, sha, bit, byte, và hex

8 bits = 1 byte 1 byte biểu diễn được 2^8 = 256 "ký tự" 4 bits biểu diễn được 2^4 = 16 "ký tự". Một ký tự thuộc hệ hexadecimal (hệ số 16) là một ký tự trong khoảng: 0123456789abcdef Vậy chỉ cần 4 bits là có thể biểu diễn 1 ký tự hex, 2 ký tự hex = 1 byte MD5 là gì? MD5 là tên một thuật toán hash được sử dụng rộng rãi, được định nghĩa đầy đủ trong rfc1321. Thuật toán hash hiểu nôm na là thuật toán nhận 1 đầu vào thì sẽ cho ra 1 kết quả duy nhất, 2 đầu vào khác nhau sẽ phải cho ra 2 đầu ra khác nhau. nhận đầu vào có kích thước tuỳ ý nhưng trả về đầu ra với kích thước cố định. Các hàm hash dùng trong bảo mật thường có thêm tính chất: với 2 đầu vào khác nhau sẽ luôn cho ra 2 đầu ra khác nhau. Giá trị được trả về bởi hash function gọi là "hash value", "hash codes", "hash sums", hay "hash". Ví dụ: $ printf "familug" | md5sum b2bc686c91b99bd9cd92e70cdeaadf40  - $ printf "FAMILUG" | md5sum 60e...

[Golang] gofmt và sắp xếp import package

câu lệnh `` gofmt `` (đọc là gâu-phằm) sẽ tự động sắp xếp import, format code của file đầu vào, và in ra màn hình code đã được format theo tiêu chuẩn của Golang. Nếu để các dòng import liền nhau, gofmt sẽ sắp xếp chúng theo thứ tự alphabetical. Để tách riêng các standard package với các external package, phân cách chúng bởi 1 dòng trắng. Hai cụm import sẽ được gofmt sắp xếp riêng. Ví dụ: import (     "encoding/json"     "fmt"     "net"     "net/http"     recover_mw "git.familug.org/hvn/golib/echo/recover"     log "github.com/Sirupsen/logrus"     logmw "github.com/deoxxa/echo-logrus"     "github.com/labstack/echo" ) Cũng có thể dùng goimports để sắp xếp với logic tương tự mà không cần dòng trắng, nhưng đôi khi goimports tỏ ra quá thông minh và đã có lần tự import https://github.com/cockroachdb/cockroach/tree/421dcbbfe645eab4b49f682eabf69d98d36e50b...

Học Python tại Hà Nội

Tiếp nối thành công 2 khoá PyFML01 và PyFML02, khoá PyFML03 đã được mở. Xem thông tin chi tiết tại: https://gist.github.com/hvnsweeting/4112374900ef17411f44 Buổi học tới sẽ bắt đầu lúc 19h thứ 5 ngày 15 tháng 10 năm 2015. Vui lòng đăng ký ngay để biết thêm chi tiết. Page Facebook: https://www.facebook.com/pyfml Hết.

Mirroring apt repository với apt-mirror

Mirror trong tiếng Việt, dạng danh từ là cái gương, dạng động từ là "phản chiếu". Trong IT, mirror có nghĩa là giữ một bản copy nội dung của 1 site tại một site khác, nôm na là tạo bản copy. Đây là một kỹ năng có thể nắm bắt trong 10 phút và dùng cả đời :D Keyword mirror /ˈmɪrə/ Việt sub: mí-rơ apt repository là nơi chứa các package để cài đặt một phần mềm cho các hệ điều hành sử dụng apt (debian, ubuntu...). Ví dụ apt repository của postgresql: http://www.postgresql.org/download/linux/ubuntu/ Vì sao phải mirror?

base64 encoding

Loạt bài viết giới thiệu về các khái niệm liên quan đến việc chuyển hoá dữ liệu thành 1 dạng khác (encode), và chuyển ngược lại (decode). Các từ khoá: - encode/decode <verb> - encoding/decoding <noun> việc "encode"/"decode" - data encoding Base64, Base32, Base16 - tên các thuật toán để encode và decode các chuỗi nhị phân tuỳ ý (binary string) thành dạng text tương ứng. - Tại sao lại là 64? vì nó sử dụng 64 ký tự để biểu diễn. [A-Za-z0-9+/] là 26 + 26 + 10 + 2 = 64. Ngoài ra có ký tự "=" dùng để đệm (pad). - Có biến thể khác sử dụng dấu -_ thay cho +/, dùng trong xử lý URL và filename Tương tự, Base32 sử dụng bảng chữ cái [A-Z2-7] = 26 + 6 = 32 Base16 còn gọi là hex - sử dụng các ký tự [0-9A-F] = 10 + 6 = 16 Trên terminal, dùng lệnh base64 để encode một chuỗi bất kỳ thành dạng "Base64": $ printf "FAMILUG" | base64 RkFNSUxVRw== Python2.7 (sử dụng ipython): In [3]: import base64 In [7]: base64.b64encode(...

Vagrant, những bước chân lang thang...

Mình luôn là fan cuồng của những dòng lệnh , và lý do mà mình không đến với vagrant sớm hơn cũng vì điều này. Nhưng muộn còn hơn không, nhỉ?!!!   Trước kia dùng linux, sử dụng KVM để chạy máy ảo, chỉ cần vài câu lệnh là đủ để 1 cái máy chạy ngon lành, ssh vào ầm ầm, và chẳng có lý do gì để mình phải cài lên máy 1 phần mềm viết bằng Ruby, chỉ để phục vụ mục đích tương tự - lại còn phải chạy với Virtualbox (ngày xưa thế, giờ chắc đã hỗ trợ KVM). Nhưng giờ đã khác, mình không còn dùng Linux nữa, Virtualbox là giải pháp duy nhất trên hệ điều hành này, cách để bật một máy ảo lên không gì khác ngoài sử dụng giao diện GUI. Sống tạm bợ được hơn một năm, và một ngày cuối tuần, mình bất ngờ tìm lại với Vagrant . Từ khoá vagrant: /ˈveɪɡr(ə)nt/ Vietsub: vâygrờnt :  có nghĩa là người lang thang Vagrant đơn giản đến bất ngờ, cái doc đọc xong trong vòng 20 phút, và cuộc đời sang trang. Cài đặt xem chi tiết tại: http://www.vagrantup.com/downloads Từ giờ cần bật máy, chỉ cầ...

[bash] trôi - in từng dòng của file theo phong cách slow-motion

Xin giới thiệu phát minh vĩ đại nhất của ngày hôm nay mang tên " trôi ", một câu lệnh siêu khủng khiếp có khả năng in ra từng dòng của một file - theo cơ chế quay chậm (slow-motion) : )) Ứng dụng: - xem cho đẹp, ngắm cho vui - auto scroll,  tự cuộn trang như boss Câu lệnh: $ alias troi='while read i; do echo $i; sleep 0.5; done <' $ troi /etc/passwd và rồi nói cứ thế trôi,  như suối trong khe,  như xe trên phố  trôi đi trôi đi như thế này này xe xe xe xe nước nước nước nước ...

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG