프론트엔드/React
리액트에서 cryptoJS 사용하는 법
꿀표
2021. 4. 15. 11:44
cryptoJS 사용하는 법
지금부터 plan text를 암호화 하는 방법을 알아보겠습니다.
우선 Work Flow를 읽어보며 흐름을 잡으시고, 예시를 보면서 사용법을 익혀보겠습니다!
Work Flow
1. npm i crypto-js 설치
npm i crypto-js
2. import crypto from 'crypto-js'
import crypto from 'crypto-js';
3. Encrypt
const ciphertext = CryptoJS.AES.encrypt('암호화할 값', 'secret key').toString();
*secret key는 서버개발자와 공유하는 키값이다.
4. Decrypt
const bytes = CryptoJS.AES.encrypt(ciphertext, 'secret key').toString();
const originalText = bytes.toString(CryptoJS.enc.Utf8); // output: '암호화할 값'
예시코드
export default function Authentication() {
const [password, setPassword] = useState();
const onChangeInput = (e) => {
setPassword(crypto.AES.encrypt(e.target.value, process.env.REACT_APP_SECRET_KEY).toString())
}
const handleSubmit = (e) => {
e.preventDefault();
axios.post("api 주소", {pw: password}).then(res => console.log(res.data))
}
return (
<form onSubmit={handleSubmit}>
<label>비밀번호를 입력해주세요!</label>
<input type="password" placeholder="비밀번호" onChange={onChangeInput}/>
<button type="submit">Submit</Button>
</form>
)
}
Logic
1) 사용자가 비밀번호를 입력하면
2) 암호화된 상태로 상태값에 사용자가 입력한 비밀번호를 저장.
3) 사용자가 Submit버튼을 누르면 암호화된 상태값을 서버로 전달.
4) 이후 서버에서는 전달받은 암호화 값을 Decrypt(복호화)할 수 있다. (Work Flow 4번).