Tiền điện tử tinh tế trong nodejs

Nút mã hóa mô-đun. js support code. Nó cung cấp chức năng mã hóa bao gồm một tập hợp các trình bao bọc cho các hàm băm HMAC, mật mã, giải mã, ký tự và xác minh của SSL mở

Show

    Các bài viết liên quan

    • Các gói phần mềm trong Pytorch
    • Rune trong Dart
    • Symbol in the Dart setting
    • Nút. js Globals – Global NodeJs object
    • Nút DNS mô-đun. js
    • Mã hóa mật khẩu. các khái niệm cơ bản

    Hash là gì?

    Hàm băm là một chuỗi bit có độ dài cố định, tức là được tạo ra theo trình thủ tục và xác định từ một số khối dữ liệu nguồn tùy chọn

    HMAC is anything

    HMAC là viết tắt của Mã xác thực tin nhắn dựa trên trùm. Đây là quá trình áp dụng thuật toán băm cho cả dữ liệu và khóa bí mật dẫn đến một hàm băm cuối cùng duy nhất

    Giao diện SubtleCrypto của Web Crypto API cung cấp một số chức năng mật mã cấp thấp. Truy cập vào các tính năng của SubtleCrypto có được thông qua thuộc tính subtle của đối tượng Crypto mà bạn nhận được từ thuộc tính crypto

    Cảnh báo. API này cung cấp một số nguyên hàm mật mã cấp thấp. Rất dễ lạm dụng chúng và những cạm bẫy liên quan có thể rất tinh vi

    Ngay cả khi giả sử bạn sử dụng các chức năng mật mã cơ bản một cách chính xác, quản lý khóa an toàn và thiết kế hệ thống bảo mật tổng thể là cực kỳ khó hiểu đúng và thường là lĩnh vực của các chuyên gia bảo mật chuyên nghiệp

    Lỗi trong thiết kế và triển khai hệ thống bảo mật có thể khiến tính bảo mật của hệ thống hoàn toàn không hiệu quả

    Vui lòng tìm hiểu và thử nghiệm, nhưng không đảm bảo hoặc ám chỉ tính bảo mật của tác phẩm của bạn trước khi một cá nhân am hiểu về chủ đề này xem xét kỹ lưỡng tác phẩm đó. Khóa học Crypto 101 có thể là một nơi tuyệt vời để bắt đầu tìm hiểu về thiết kế và triển khai các hệ thống an toàn

    Giao diện này không kế thừa bất kỳ thuộc tính nào vì nó không có giao diện mẹ

    Giao diện này không kế thừa bất kỳ phương thức nào vì nó không có giao diện mẹ

    SubtleCrypto.encrypt()

    Trả về một Promise đáp ứng dữ liệu được mã hóa tương ứng với văn bản rõ ràng, thuật toán và khóa được cung cấp dưới dạng tham số

    SubtleCrypto.decrypt()

    Trả về một Promise đáp ứng với dữ liệu rõ ràng tương ứng với văn bản được mã hóa, thuật toán và khóa được cung cấp dưới dạng tham số

    SubtleCrypto.sign()

    Trả về một Promise đáp ứng với chữ ký tương ứng với văn bản, thuật toán và khóa được cung cấp dưới dạng tham số

    SubtleCrypto1

    Trả về một Promise đáp ứng với giá trị boolean cho biết liệu chữ ký được cung cấp dưới dạng tham số có khớp với văn bản, thuật toán và khóa cũng được cung cấp dưới dạng tham số hay không

    SubtleCrypto3

    Trả về một Promise đáp ứng với thông báo tóm tắt được tạo từ thuật toán và văn bản được cung cấp dưới dạng tham số

    SubtleCrypto5

    Trả về một Promise đáp ứng với một SubtleCrypto7 mới được tạo, đối với các thuật toán đối xứng hoặc một SubtleCrypto8, chứa hai khóa mới được tạo, đối với các thuật toán bất đối xứng. Chúng sẽ khớp với thuật toán, cách sử dụng và khả năng trích xuất được cung cấp dưới dạng tham số

    SubtleCrypto9

    Trả về một Promise đáp ứng với một SubtleCrypto7 mới được tạo bắt nguồn từ khóa chính và thuật toán cụ thể được cung cấp dưới dạng tham số

    subtle2

    Trả về một Promise đáp ứng với bộ đệm các bit giả ngẫu nhiên mới được tạo từ khóa chính và thuật toán cụ thể được cung cấp dưới dạng tham số

    subtle4

    Trả về một Promise đáp ứng với một SubtleCrypto7 tương ứng với định dạng, thuật toán, dữ liệu khóa thô, cách sử dụng và khả năng trích xuất được cung cấp dưới dạng tham số

    subtle7

    Trả về một Promise đáp ứng với bộ đệm chứa khóa ở định dạng được yêu cầu

    subtle9

    Trả về một Promise đáp ứng với khóa đối xứng được bao bọc để sử dụng (truyền và lưu trữ) trong môi trường không an toàn. Khóa được bao bọc khớp với định dạng được chỉ định trong các tham số đã cho và việc bao bọc được thực hiện bằng khóa bao bọc đã cho, sử dụng thuật toán đã chỉ định

    Crypto1

    Trả về một Promise đáp ứng với một SubtleCrypto7 tương ứng với khóa bọc được cung cấp trong tham số

    Chúng tôi có thể chia các chức năng được triển khai bởi API này thành hai nhóm. chức năng mật mã và chức năng quản lý khóa

    Đây là những chức năng bạn có thể sử dụng để triển khai các tính năng bảo mật như quyền riêng tư và xác thực trong hệ thống. API SubtleCrypto cung cấp các chức năng mã hóa sau

    • Crypto5 và Crypto6. tạo và xác minh chữ ký số
    • Crypto7 và Crypto8. mã hóa và giải mã dữ liệu
    • Crypto9. tạo một bản tóm tắt có độ dài cố định, chống va chạm của một số dữ liệu

    Ngoại trừ Crypto9, tất cả các chức năng mật mã trong API đều sử dụng khóa mật mã. Trong API SubtleCrypto, khóa mật mã được biểu diễn bằng đối tượng SubtleCrypto7. Để thực hiện các thao tác như ký và mã hóa, bạn chuyển một đối tượng SubtleCrypto7 vào hàm Crypto5 hoặc Crypto7

    Tạo và lấy khóa

    Cả hai hàm crypto6 và crypto7 đều tạo một đối tượng SubtleCrypto7 mới

    Sự khác biệt là crypto6 sẽ tạo ra một giá trị khóa riêng biệt mới mỗi khi bạn gọi nó, trong khi crypto7 lấy khóa từ một số tài liệu tạo khóa ban đầu. Nếu bạn cung cấp cùng một tài liệu khóa cho hai cuộc gọi riêng biệt tới crypto7, bạn sẽ nhận được hai đối tượng SubtleCrypto7 có cùng giá trị cơ bản. Điều này hữu ích nếu, ví dụ, bạn muốn lấy khóa mã hóa từ mật khẩu và sau đó lấy cùng khóa từ cùng một mật khẩu để giải mã dữ liệu

    Nhập và xuất khóa

    Để cung cấp khóa bên ngoài ứng dụng của bạn, bạn cần xuất khóa và đó là mục đích của SubtleCrypto.encrypt()3. Bạn có thể chọn một trong số các định dạng xuất

    Nghịch đảo của SubtleCrypto.encrypt()3 là SubtleCrypto.encrypt()5. Bạn có thể nhập khóa từ các hệ thống khác và hỗ trợ các định dạng tiêu chuẩn như PKCS #8 và JSON Web Key sẽ giúp bạn thực hiện việc này. Hàm SubtleCrypto.encrypt()3 xuất khóa ở định dạng không được mã hóa

    Nếu khóa nhạy cảm, bạn nên sử dụng SubtleCrypto.encrypt()7, xuất khóa rồi mã hóa bằng khóa khác;

    Nghịch đảo của SubtleCrypto.encrypt()7 là SubtleCrypto.encrypt()9, giải mã rồi nhập khóa

    Lưu trữ chìa khóa

    Các đối tượng SubtleCrypto7 có thể được lưu trữ bằng thuật toán sao chép có cấu trúc, nghĩa là bạn có thể lưu trữ và truy xuất chúng bằng API lưu trữ web tiêu chuẩn. Thông số kỹ thuật dự kiến ​​rằng hầu hết các nhà phát triển sẽ sử dụng API IndexedDB để lưu trữ các đối tượng SubtleCrypto7

    Các chức năng mã hóa do Web Crypto API cung cấp có thể được thực hiện bởi một hoặc nhiều thuật toán mã hóa khác nhau. đối số Promise2 cho hàm cho biết thuật toán nào sẽ sử dụng. Một số thuật toán cần thêm tham số. trong những trường hợp này, đối số Promise2 là một đối tượng từ điển bao gồm các tham số bổ sung