Giải mã JavaScript

Trong bài viết trước, tôi đã đề cập đến Chuyển đổi chuỗi hình ảnh thành chuỗi base64 bằng Javascript nhưng trong bài viết này, tôi đã đề cập đến cách chúng ta có thể Mã hóa và Giải mã chuỗi hoặc văn bản trong Javascript để bảo mật văn bản bằng Crypto JS hoặc không sử dụng bất kỳ plugin/Thư viện bên ngoài nào

Sử dụng CryptoJS

Để mã hóa và sau đó giải mã chuỗi hoặc văn bản bằng Javascript, một trong những phương pháp dễ dàng và an toàn nhất là sử dụng thư viện CryptoJS, thư viện này cung cấp cho chúng tôi triển khai JavaScript của các thuật toán mã hóa tiêu chuẩn và an toàn

Chúng nhanh và có giao diện nhất quán và đơn giản

Có nhiều thuật toán mà bạn có thể áp dụng để mã hóa/giải mã văn bản bằng CryptoJS, chẳng hạn như MD5, SHA-1, SHA-2, SHA-3, AES, v.v.

Chúng tôi sẽ xem xét sử dụng ví dụ về Thuật toán AES trong bài viết này, dễ sử dụng và đơn giản

Giả sử chúng ta có HTML mẫu như bên dưới




encrypted


decrypted
Actual Message

Here is sample Message

Sau đó, sử dụng CryptoJS, chúng tôi có javascript để mã hóa và giải mã chuỗi như bên dưới

    var encryptedAES = CryptoJS.AES.encrypt(document.getElementById("demo3").innerHTML, "SomeSalt");
    var decryptedBytes = CryptoJS.AES.decrypt(encryptedAES, "SomeSalt");
    var plaintext = decryptedBytes.toString(CryptoJS.enc.Utf8);
    
    document.getElementById("demo1").innerHTML = decryptedBytes;
    document.getElementById("demo2").innerHTML = plaintext;

Giải mã JavaScript

Nếu bạn xem mã javascript ở trên, chúng tôi có cấu hình hoặc cài đặt mẫu này cho CryptoJS bằng AES

    var encryptedAES = CryptoJS.AES.encrypt("Message", "My Secret Passphrase");
    var decryptedBytes = CryptoJS.AES.decrypt(encryptedAES, "My Secret Passphrase");
    var plaintext = decryptedBytes.toString(CryptoJS.enc.Utf8);

câu đố mẫu. https. //jsfiddle. mạng/1kd46qaz/

Không sử dụng Thư viện bên ngoài

Nếu bạn không thích phương pháp sử dụng Thư viện bên ngoài như CryptoJS ở trên, thì bạn có thể tạo hàm javascript của riêng mình để mã hóa và giải mã chuỗi, nhưng nó sẽ không an toàn như trên

const Encrypt = (salt, text) => {
  const textToChars = (text) => text.split("").map((c) => c.charCodeAt(0));
  const byteHex = (n) => ("0" + Number(n).toString(16)).substr(-2);
  const applySaltToChar = (code) => textToChars(salt).reduce((a, b) => a ^ b, code);

  return text.split("").map(textToChars).map(applySaltToChar).map(byteHex).join("");
};

const decrypt = (salt, encoded) => {
  const textToChars = (text) => text.split("").map((c) => c.charCodeAt(0));
  const applySaltToChar = (code) => textToChars(salt).reduce((a, b) => a ^ b, code);
  return encoded.match(/.{1,2}/g).map((hex) => parseInt(hex, 16)).map(applySaltToChar).map((charCode) => String.fromCharCode(charCode)).join("");
};

// encrypt
const encrypted_text = Encrypt("YourSalt", "HelloWorld"); 
document.getElementById("demo1").innerHTML=encrypted_text;

// decrypt
const decrypted_string = decrypt("YourSalt", encrypted_text); 
document.getElementById("demo2").innerHTML=decrypted_string;

đầu ra

encrypted
537e7777744c7469777f

decrypted
HelloWorld

Đây là mẫu Fiddle. https. //jsfiddle. net/8zvyfmgd/1/

Ngoài ra còn có các thư viện bên ngoài khác để mã hóa văn bản thuần túy trong javascript, nhưng tôi sẽ đề xuất bạn sử dụng CryptoJS hoặc bạn có thể sử dụng 'sodium-plus'

Trang này cho phép bạn mã hóa văn bản bằng một khóa được chỉ định, tạo ra một tin nhắn được mã hóa và giải mã các tin nhắn được mã hóa, khôi phục văn bản gốc. Tất cả mã hóa được thực hiện hoàn toàn trong trình duyệt Web của bạn bằng ngôn ngữ JavaScript (rõ ràng ngôn ngữ này phải được bật để sử dụng trang này). Không có gì được gửi đến bất kỳ trang Web nào khi bạn mã hóa hoặc giải mã một tin nhắn. Nếu muốn, bạn có thể tải xuống một bản sao của trang này và các chương trình JavaScript trong đó về máy tính của riêng bạn và sử dụng nó ngay cả khi bạn không kết nối Internet. (Với mục đích này, bạn có thể thích phiên bản “tinh gọn” nguyên khối với tài liệu đã bị xóa và tất cả các chương trình JavaScript được nhúng vào một trang Web. )

Chìa khóa

Nhập khóa sẽ được sử dụng để mã hóa hoặc giải mã dữ liệu trong trường bên dưới. Nếu Văn bản được chọn, thì khóa có thể bao gồm bất kỳ chuỗi nào có tối đa 1024 ký tự; . Nếu Hệ thập lục phân được chọn, khóa được cung cấp dưới dạng một chuỗi các chữ số thập lục phân. 0–9, a–f (hoặc A–F), có độ dài 32 byte (64 chữ số thập lục phân) để bảo mật tối đa. Nút Tạo có thể được sử dụng để tạo khóa ở định dạng văn bản hoặc thập lục phân (tùy thuộc vào nút nào được chọn) đủ lâu để cung cấp bảo mật tối đa bằng cách sử dụng trình tạo số giả ngẫu nhiên chất lượng cao được tạo từ thời điểm tải trang, thời điểm bạn nhấn . Bạn có thể tạo danh sách các khóa phù hợp để trao đổi với các đối tác bằng cách sử dụng trang Trình tạo cụm từ mật khẩu đồng hành của chúng tôi

Văn bản thô

Nhập hoặc dán văn bản cần mã hóa vào ô sau. Nếu bạn muốn mã hóa tệp nhị phân (ví dụ: tệp hình ảnh hoặc âm thanh), hãy sử dụng một tiện ích như Base64 để mã hóa tệp dưới dạng văn bản trước khi mã hóa. Nhấn nút Mã hóa để mã hóa văn bản bằng khóa trên; . Nếu bạn muốn ngụy trang tin nhắn của mình dưới dạng văn bản tiếng Anh (vô nghĩa), trước tiên hãy mã hóa tin nhắn đó bằng bất kỳ mã hóa nào, sau đó chọn, sao chép và dán văn bản vào trang Steganography (viết ẩn) của chúng tôi

mã hóa.      

văn bản mật mã

Để giải mã một tin nhắn đã được mã hóa, hãy dán tin nhắn đó vào hộp bên dưới, nhập khóa mà tin nhắn đó đã được mã hóa vào hộp Khóa ở trên cùng và nhấn nút Giải mã. Văn bản được giải mã sẽ được đặt trong hộp Văn bản thuần túy ở trên. Văn bản trước và sau tin nhắn được mã hóa bị bỏ qua và mã hóa mà tin nhắn sử dụng được xác định tự động. Bạn chỉ có thể giải mã một tin nhắn tại một thời điểm;

Làm cách nào để giải mã mã JavaScript?

Nếu bạn có Google Chrome, hãy mở trang web có JavaScript mà bạn đang cố giải mã. Nhấn F12 để mở Công cụ dành cho nhà phát triển bên trong Chrome. Bây giờ hãy chuyển sang tab Tập lệnh, nhấp chuột phải và chọn Gỡ rối mã nguồn . Đó là nó.

Làm cách nào để mã hóa và giải mã dữ liệu trong JavaScript?

Để giải mã bản mã trở lại thành tin nhắn văn bản thuần túy ban đầu, chúng ta có thể sử dụng chức năng giải mã sau. const decrypted = CryptoJS. AES. giải mã(mã hóa, khóa);

Làm cách nào để giải mã SHA256 trong JavaScript?

SHA256 là thuật toán băm. Không thể giải mã được - đó là vấn đề.

Làm thế nào để giải mã một chuỗi?

Phương pháp giải mã. .
Tìm độ dài L của đoạn dây
Tìm giá trị trần và sàn của √Length và gán chúng cho các biến
Tạo ma trận 2D và điền vào ma trận theo các ký tự của chuỗi theo cột
Đọc ma trận theo hàng để lấy chuỗi được giải mã