[React Native/JS] CryptoJS AES 실무에서 사용하기
리액트 네이티브에서 cryptojs 사용하기 plan text , clear text : 원래 값 encrypt , cipher text : 암호화 decrypt : 복호화 복호화는 암호화의 역과정. (즉 암호화를 풀어서 plan text로 읽히게 해주는 것) 설..
coding-heesong.tistory.com
1. 첫 페이지 로드시 로컬스토리지 값이 있나 없나 체크 하는 init() 함수 만들기
2. 조건 충족 시 handleSubmit 이벤트핸들러 동작 시키기
1.
useEffect(()=>{
init();
}, [])
const init = async () => {
const ciphertext = await AsyncStorage.getItem("@Bank");
// 로컬스토리지 값 체크
if(ciphertext != null) {
// 값이 있으면 복호화해서 저장
const bytes = CryptoJS.AES.decrypt(ciphertext, BANK_KEY); // BANK_KEY는 상수로 담겨있다.
const originaltext = bytes.toString(CryptoJS.enc.Utf8);
// 복호화한 값을 객체에 저장
const { bankAccountNo, bankName, bankOwner } = JSON.parse(originalText);
// 스테이트 값 업데이트
setReceivingInsurance({ bankAccountNo, bankName, bankOwner });
// 변경되었다고 알려주기 추후 handleSubmit에서 변경 감지에 사용됨
setChecked(true);
}
}
2.
const handleSubmit = async () => {
if (checked) { // 스테이트 값이 업데이트 되었다면
// 값을 다시 암호화해서
const ciphertext = CryptoJS.AES.encrypt(JSON.stringify(receivingInsurance), BANK_KEY).toString();
// 앱 로컬스토리지에 다시 저장한다.
await AsyncStorage.setItem('@Bank', ciphertext);
}
// 전역 상태 관리 값에도 값을 넣어서 전체적으로 관리해준다.
claimRequestVar({ ...claimRequest, receivingInsurance: { ...claimRequest.receivingInsurance, ...receivingInsurance } });
// 완료 되었으면 라우터 이동
navigation.navigate('다음페이지');
};
'coding > react native' 카테고리의 다른 글
[React Native] IOS, Android facebook ATT SDK 설정하기 (0) | 2021.09.08 |
---|---|
[React Native] Gradle build와 task (0) | 2021.09.07 |
[React Native] jdk8 build error (0) | 2021.09.03 |
[React Native] The minCompileSdk (31) specified in a... 빌드 에러 (0) | 2021.09.03 |
[React Native/JS] CryptoJS AES 실무에서 사용하기 (0) | 2021.04.15 |
댓글