Hej! Jako dostawca haczyków widziałem z pierwszej ręki, jak rośnie zapotrzebowanie na wszechstronne i niezawodne haczyki, nie tylko w świecie fizycznym, ale także w przestrzeni cyfrowej. Dzisiaj porozmawiam o czymś nieco innym - jak używać haczyków do interfejsu Crypto API w React. Ale najpierw rzućmy okiem na niektóre z niesamowitych haczyków, które oferujemy w królestwie fizycznym.
Mamy naprawdę fajne produkty, takie jakHaczyk do prostokątnej rurki. Ten haczyk jest bardzo przydatny dla wszelkiego rodzaju aplikacji, w których musisz przymocować rzeczy do prostokątnych rur. Jest solidny, dobrze - wykonany i może poradzić sobie z dużą wagą. Kolejną świetną opcją jestHak na półce supermarketu. Te haki są zaprojektowane specjalnie dla półek w supermarkecie, co ułatwia wyświetlanie produktów i utrzymanie wszystkiego.

Teraz zanurzmy się w cyfrową stronę rzeczy. API Web Crypto to potężne narzędzie, które pozwala twórcom stron internetowych wykonywać operacje kryptograficzne w przeglądarce. Chodzi o utrzymanie bezpieczeństwa danych, niezależnie od tego, czy są to informacje o użytkowniku, transakcje finansowe, czy cokolwiek innego, co wymaga ochrony. I reaguj, cóż, jest to jedna z najpopularniejszych bibliotek JavaScript do budowania interfejsów użytkowników. Jak więc połączyć te dwa razem za pomocą haczyków?
Co to są haczyki w React?
Jeśli jesteś nowy w reakcji, haczyki są stosunkowo nową funkcją (wprowadzoną w React 16.8), która pozwala używać stanu i innych funkcji React bez pisania klasy. Są to funkcje, które pozwalają „zaczepić się do” stanu react i funkcji cyklu życia z komponentów funkcji. Na przykładUsstateHook pozwala dodać stan do komponentu funkcjonalnego.
Import React, {usestate} z „react”; funkcja przykład () {const [count, setCount] = usestate (0); return (<div> <p> kliknąłeś {count} Times </p> <Button onClick = {() => setCount (count + 1)}> kliknij mnie </przycisk> </iv>); }
W tym prostym przykładzie,Usstateto hak, który inicjuje zmienną stanuliczyćo wartości początkowej 0.setCountfunkcja służy do aktualizacji wartościliczyć.
Po co używać haczyków z interfejsem Crypto API w React?
Używanie haczyków z interfejsem API Crypto w React może sprawić, że kod jest bardziej modułowy, wielokrotnego użytku i łatwiejszy do zrozumienia. Zamiast złożonego kodu kryptograficznego rozrzuconego po komponentach, możesz go zamknąć w niestandardowych haczykach. W ten sposób możesz ponownie użyć tej samej logiki kryptograficznej w różnych częściach aplikacji.
Tworzenie niestandardowego haczyka do interfejsu kryptograficznego API
Załóżmy, że chcemy stworzyć niestandardowy hak, aby wygenerować losowy klucz kryptograficzny za pomocą interfejsu API Crypto. Oto jak możemy to zrobić:
Import reaguje z „React”; import {usecallback, Useeffect, Usestate} z „react”; const usecryptokey = () => {const [cryptokey, setcryptokey] = usestate (null); const generateKey = usecallback (async () => {try {const key = Akait Window.crypto.subtle.generateKey ({name: 'aes-gcm', długość: 256,}, true, ['encrypt', 'decrypt']); setCryptokey (key);} catch (błąd) {console.error („błąd generujący crypto: ', błąd); }}, []); Useeffect (() => {generateKey ();}, [generateKey]); zwróć kryptokey; }; funkcja app () {const key = usecryptokey (); return (<b> {key? (<p> Klucz kryptograficzny wygenerowany pomyślnie! </p>): (<p> generowanie klucza kryptograficznego ... </p>)} </iv>); } Domyślna aplikacja Eksportuj;
W tym przykładzie stworzyliśmy niestandardowy hak o nazwieUsecryptokey. W haczyku używamyUsstateHaczyk do zarządzania stanem klucza kryptograficznego. .generalFunkcja to funkcja asynchroniczna, która wykorzystuje interfejs API Crypto do generowania klucza AES - GCM. UżywamyusecallbackHaczyk do zapamiętaniageneralFunkcja, aby nie została utworzona na każdym renderowaniu. .Użyj EFEFECTHaczyk służy do wywołaniageneralfunkcja, gdy element zamontuje.
Szyfrowanie i odszyfrowanie danych za pomocą niestandardowego haka
Teraz idźmy o krok dalej i utwórz niestandardowy haczyk do szyfrowania i odszyfrowania danych za pomocą wygenerowanego klucza.
Import reaguje z „React”; import {usecallback, Useeffect, Usestate} z „react”; const usecryptoencryption = () => {const [cryptokey, setcryptokey] = usestate (null); const generateKey = usecallback (async () => {try {const key = Akait Window.crypto.subtle.generateKey ({name: 'aes-gcm', długość: 256,}, true, ['encrypt', 'decrypt']); setCryptokey (key);} catch (błąd) {console.error („błąd generujący crypto: ', błąd); }}, []); const encryptdata = usecallback (async (data) => {if (! cryptokey) {return null;} try {const encoder = new texenCoder (); const dataBuffer = encoder.encode (data); const iv = Window.crypto.getRandomValues (new uint8Array (12)); const Encrypted = AWATIT = AWATIAIT = AWETIAITE Window.crypto.subtle.Encrypt ({Nazwa: „AES-GCM”, IV,}, Cryptokey, DataBuffer); Data: error); const decryptdata = usecallback (async (encryptedData) => {if (! cryptokey) {return null;} try {const iv = encryptedData.Slice (0, 12); const data = encryptedData.slice (12); const decrypted = aAT Window.Crypto.Subtle.Decrypt ({nazwa: „AES-GCM”: IV,}, dane); Useeffect (() => {generateKey ();}, [generateKey]); return {encryptdata, decryptdata}; }; funkcja app () {const {encryptdata, decryptdata} = usecryptoencryption (); const [enciptedData, setEncryptedData] = Usestate (null); const [decryptedData, setdecryptedData] = Usestate (null); const HandeEncrypt = async () => {const data = 'Hello, World!'; const encrypted = czekaj na EncryptData (dane); setEncryptedData (szyfrowane); }; const riseledeCrypt = async () => {if (encryptedData) {const decrypted = oczekiwanie decryptdata (encryptedData); setdeCryptedData (odszyfrowany); }}; return (<but button onClick = {uchwyt,}> zaszyfruj dane </button> {encryptedData && (<p> szyfrowane dane: {encryptedData.toString ()} </p>)} <Button onClick = {HandleDeCrypt}> decrypt danych </przycisk> {decryptedData {decryptedData} </p>} </iv>); } Domyślna aplikacja Eksportuj;
W tym przykładzie rozszerzyliśmy nasz niestandardowy hak o funkcje szyfrowania i odszyfrowywania danych. .EncryptdataFunkcja przyjmuje ciąg danych, koduje je, generuje losowy wektor inicjalizacji (IV), a następnie szyfruje dane za pomocą wygenerowanego klucza kryptograficznego. .decryptdataFunkcja przyjmuje zaszyfrowane dane, wyodrębnia IV i odszyfrowanie danych za pomocą tego samego klucza.
Wniosek
Używanie haczyków z interfejsem API Crypto w React może zwiększyć bezpieczeństwo i łatwiejsze w utrzymaniu aplikacje internetowe. Ukształcając logikę kryptograficzną w niestandardowych haczykach, możesz ponownie wykorzystać ją w różnych komponentach i utrzymać bazę kodu.
Jeśli jesteś zainteresowany naszymi fizycznymi hakami, takimi jakHaczyk do prostokątnej rurkilubHak na półce supermarketu, lub jeśli masz jakieś pytania dotyczące używania haczyków w przestrzeni cyfrowej, możesz sięgnąć na dyskusję na zamówienia. Zawsze jesteśmy tutaj, aby pomóc!
Odniesienia
- React Dokumentacja
- Dokumentacja API Crypto Crypto API
