2011-12-29 26 views
6

Mỗi khi một phiên bản mới của trình duyệt hiển thị, tôi nghe về nội dung mới được thêm vào, như nói webGL và các công nghệ khác mà không ai thực sự biết nếu họ bắt kịp.có chức năng băm chuỗi javascript tích hợp trong các trình duyệt mới nhất không?

Nhưng tôi tự hỏi nếu có ai đó từng nghĩ về những thứ cơ bản như vậy trong JS như hàm băm (MD5, SHA1 và tương tự).

Bằng trình duyệt mới nhất tôi có nghĩa là phiên bản phát triển hiện nay quá như Opera 12, Chrome 17 và Firefox 10

Nhìn bây giờ cho giải pháp tôi thấy nhận xét này trên một chủ đề ở đây: https://stackoverflow.com/questions/7204097/short-hashing-function-for-javascript ( Bạn có biết rằng đối tượng javascript đã là hashtables?). Vậy các 'hashtables' này là gì? Nó có nghĩa là tôi có thể làm cho bất kỳ chuỗi thành một băm, nhưng không phải là một thành lập như md5 hoặc sha1 nhưng một số JS xây dựng cụ thể?

cơ bản những gì tôi cần phải làm là:

var txt="Hello world!"; 
var hash = txt.toSha1(); 
+1

Bạn có vẻ bối rối các bảng băm (một đối tượng lưu trữ các giá trị so với các khóa có tên, như '{name:" bob ", dob:" 27/1/1970 "}') với hàm băm (hàm một dữ liệu lớn được đặt thành một nhỏ, như md5) – Quentin

+0

Có, bây giờ tôi hiểu rằng những gì tôi tìm kiếm không có gì để làm với các bảng băm. – rsk82

Trả lời

0

Paul Johnston đã thực hiện các thuật toán sau đây trong javascript

MD5, RIPEMD-160, SHA-1, SHA-256 và SHA-512

Bạn có thể tìm thấy mã nguồn và một số ví dụ tại đây: http://pajhome.org.uk/crypt/md5/

Tôi hy vọng đây là những gì bạn đã ooking cho.

+4

Vâng trong loại có. Nhưng câu hỏi của tôi là về sự phát triển mới trong trình duyệt, họ đặt chức năng mới liên tục và tôi tự hỏi liệu cuối cùng họ có thêm băm hay không. Nó có bao giờ được lên kế hoạch, hay bằng thiết kế phải bởi vì cái gì đó đang ngăn chặn vấn đề này? – rsk82

+0

Ồ, tôi hiểu, không phải là tôi biết trong ngữ cảnh của trình duyệt nhưng nếu bạn đang sử dụng [node.js] (http://nodejs.org/) thì đã có [gói mật mã] (http://nodejs.org/docs/latest/api/crypto.html) xử lý các loại sự kiện này –

-7

Khi tôi cần đơn giản băm bên khách hàng mà không có thư viện bên ngoài, tôi sử dụng các chức năng được xây dựng trong các chức năng atob()btoa() của trình duyệt.

window.btoa() tạo chuỗi ASCII được mã hóa cơ sở 64 từ một chuỗi "" dữ liệu nhị phân.

function utf8_to_b64(str) { 
    return window.btoa(encodeURIComponent(escape(str))); 
} 

Chức năng window.atob() giải mã một chuỗi dữ liệu đã được mã hóa bằng mã hóa cơ sở 64.

function b64_to_utf8(str) { 
    return unescape(decodeURIComponent(window.atob(str))); 
} 

http://caniuse.com/#search=btoahttp://caniuse.com/#search=atob thấy nó vô cùng được hỗ trợ bởi các trình duyệt hiện đại

Ví dụ lấy từ https://developer.mozilla.org/en-US/docs/Web/API/window.btoa

Lưu ý: Trên giải pháp không có người phụ thuộc thư viện bên ngoài. Như đã đề cập ở trên, chỉ sử dụng tính năng này cho mã hóa đơn giản. Nếu bạn đang tìm kiếm một giải pháp mã hóa an toàn thì không sử dụng nó.

+5

Đây là một mã hoá 1: 1 có thể đảo ngược hữu ích, chuyển đổi văn bản thô thành đầu ra ít hơn, và _larger_ hơn đầu vào. Cả hai đều là các thuộc tính đối lập với các hàm băm mật mã một chiều được tìm kiếm ở đây. – ecmanaut

3

Đối với bất kỳ ai vẫn đang tìm kiếm thông tin này. Có một số WebCrypto API dường như đã được hoàn thành vào đầu năm 2017.

Để sử dụng nó trong trình duyệt, bạn có thể tìm thấy nó ở window.crypto.subtle chứa các phương pháp mã hóa, phân tích, vv Tài liệu về các chức năng sẵn có here.

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