Quên mật khẩu
 Đăng ký
Xem: 136|Trả lời: 0

Hàm btoa - mã hóa base64

[Lấy địa chỉ]

36

Chủ đề

7

Bài viết

172

Điểm

Administrator

Điểm
172
Đăng lúc 2024-9-6 20:34:44 | Xem tất |Chế độ đọc
Hàm btoa dùng để mã hóa chuỗi về dạng Base64. Kết quả trả về một chuỗi ASCII.

Cú pháp:
  1. btoa(StringToEndcode)
Sao chép mã


Để giải mã, ta có thể dùng hàm **atob**, cú pháp như sau:
  1. atob(encodedData)
Sao chép mã


Hai hàm này dùng chủ yếu để phục vụ cho code JS hoặc reactJS browser. Trong JS, atob và btoa được biểu diễn như sau:
  1. const encodedData = btoa("Hello, world"); // encode a string
  2. const decodedData = atob(encodedData); // decode the string
Sao chép mã


Thông thường khi đưa vào code, ta sẽ phải mã hóa base64 trước khi giải mã để tránh lộ chuỗi ký tự ban đầu, hoặc viết tool giải mã. Vậy 2 hàm Twig trên sinh ra để phục vụ cho điều này, ta sẽ viết lại được đoạn code JS trên như sau:
  1. <script>
  2. const decodedData = atob("{{btoa('Hello, world')}}"); // decode the string
  3. </script>
Sao chép mã

Lúc này, ta ngầm hiểu "Hello, world" đã được mã hóa trên máy chủ, và 1 chuỗi ASCII được gửi về máy khách để thực hiện giải mã base64.


Một biến tấu về atob và btoa trong JS để bạn có thể dùng với tiếng Việt, tuy nhiên, điều này đối với Twig là không cần thiết. Tham khảo:
  1. function _btoa(input) {
  2.     const encoder = new TextEncoder();
  3.     const data = encoder.encode(input);
  4.     return btoa(String.fromCharCode.apply(null, data));
  5. }
  6. function _atob(encodedInput) {
  7.     const decodedData = atob(encodedInput);
  8.     const decoder = new TextDecoder();
  9.     const decodedString = decoder.decode(
  10.         new Uint8Array(decodedData.split('').map(char => char.charCodeAt(0)))
  11.     );
  12.     return decodedString;
  13. }
Sao chép mã
Bạn phải đăng nhập mới được đăng bài Đăng nhập | Đăng ký

Quy tắc điểm

Lưu trữ|Danh sách ban|Diễn đàn Sắc màu

GMT+7, 2024-11-21 13:47 , Processed in 0.048797 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

Trả lời nhanh Lên trên Trở lại danh sách