2010-07-28 43 views

Trả lời

210

echo thường sẽ tạo một dòng mới, bị chặn với -n. Hãy thử điều này:

echo -n foobar | sha256sum 
+0

Lệnh này 'sha256sum' giống như lệnh digest trong Solaris ?? – user3153014

+0

có vẻ như vậy, http://www.opensolarisforum.org/man/man1/digest.html, 'digest -a sha256' nên làm điều đó. – mvds

+39

LƯU Ý: trên OS X (BSD), đó là 'echo -n foobar | shasum -a 256' – Olie

7

Tôi tin rằng echo xuất ra một dòng mới. Hãy thử sử dụng -n làm thông số để echo để bỏ qua dòng mới.

7

echo cũng tạo ra một ký tự dòng mới được băm. thử:

/bin/echo -n foobar | sha256sum 
25

echo -n công trình và dường như không bao giờ biến mất do sử dụng lịch sử đồ sộ, tuy nhiên mỗi phiên bản gần đây của the POSIX standard, các ứng dụng Tuân thủ mới được "khuyến khích sử dụng printf".

35

Nếu sha256sum lệnh là không có sẵn (trên Mavericks chẳng hạn), bạn có thể sử dụng:

echo -n "foobar" | shasum -a 256

+0

Tuyệt vời! Tôi đã thêm điều này vào .bash_profile hàm sha256() {echo -n "$ *" | shasum -a 256} và gọi như: ~ $ sha256 foobar – rbento

+0

Không giống như câu trả lời được chấp nhận, công trình này dành cho MacOS – weefwefwqg3

49

Nếu bạn đã cài đặt openssl, bạn có thể sử dụng:

echo -n "foobar" | openssl dgst -sha256 

Đối với khác các thuật toán bạn có thể thay thế -sha256 bằng -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512 hoặc -whirlpool.

+0

Có cách nào để chỉ định số vòng bạn muốn trong sha512 không? Tôi nhìn và không thể tìm thấy nó và tự hỏi nếu bạn sẽ biết? – f1lt3r

+1

@AlistairMacDonald - Tôi không biết chính xác những gì bạn đang tìm kiếm.AFAIK, SHA512 cần 80 vòng; Nếu bạn muốn thao tác các chức năng, nó sẽ không được sha512 nữa. BTW, bạn có thể tìm kiếm/đặt câu hỏi của bạn trong [crypto.stackexchange.com] (https://crypto.stackexchange.com/ "Mật mã Stack Exchange"). – Farahmand

+1

Không giống như câu trả lời được chấp nhận, điều này phù hợp với MacOS. – weefwefwqg3

Các vấn đề liên quan