2012-04-20 33 views
7

Chúng tôi hiện đang thiết kế một api trên web và đang trong quá trình thực hiện ủy quyền. Chúng tôi đã theo dõi (chủ yếu) amazons implementation nhưng có một phần tôi thực sự không hiểu đầy đủ.Tại sao base64 mã hóa khóa ủy quyền API?

Cụ thể, điểm base64 mã hóa kết quả hmac là gì? Sự khác biệt về độ dài là không đáng kể, ít nhất là đối với hầu hết các trang web. Amazon có lẽ sẽ nhận thấy sự khác biệt mặc dù. Đó có phải là lý do duy nhất không? Liệu nó có thể có một cái gì đó để làm với ascii/unicode?

Trả lời

13

Thuật toán băm và HMAC không cung cấp đầu ra chuỗi thập lục phân, đó là điều mà nhiều người có xu hướng tin; cả hai đều xuất dữ liệu nhị phân. Base64 cung cấp cho bạn một cách dễ dàng và có thể đại diện cho dữ liệu nhị phân dưới dạng một chuỗi.

Theo như lý do tại sao, nó có thể chỉ thuận tiện và sử dụng mã hóa chuẩn giữa nhiều phần khác nhau của phần mềm. Không có gì đặc biệt về nó, ngoài việc nó được sử dụng rộng rãi.

+4

Ngụ ý trong câu trả lời của bạn là các khóa API cần được truyền từ máy khách đến máy chủ thường chạy các dịch vụ web RESTful và tương tác với các dịch vụ thường trên HTTP, sử dụng chuỗi. Vì vậy, để chuyển khóa API cho một dịch vụ như vậy qua HTTP, bạn cần mã hóa nó bằng cách nào đó và base64 là một tùy chọn phổ biến cho mục đích đó. – jeffsix

+0

+1 Đó là một ví dụ điển hình về thời điểm thích hợp hơn khi sử dụng Base64. Tôi không thường xuyên làm công cụ HTTP, vì vậy cảm ơn bạn đã thêm điều này. –

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