반응형
비밀번호를 전송할때 https가 최소 요건이지만 그래도 암호화해서 보내는게 좋습니다. *text그대로 보내는 서비스들은 따로 보안처리를 했습니다
그중 public으로 암호화해 private으로 해독하는 RSA방식이 있습니다. 기 개발된 library로 encrypt-rsa, jsencrypt등등이 있는데요. 어떤 것은 node.js에서만, 어떤 것은 react.js에서만 사용가능합니다. 이에 react.js <-> node.js 간 통신이 가능한 형태를 구현해보겠습니다
1)React
import { JSEncrypt } from "jsencrypt";
const encrypt = new JSEncrypt();
const public_key = `
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN
FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76
xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4
gwQco1KRMDSmXSMkDwIDAQAB
-----END PUBLIC KEY-----`;
encrypt.setPublicKey(public_key);
// 1234는 암호화할 텍스트입니다
const encrypted = encrypt.encrypt('1234');
2)Node
function decryptMessage(encryptedMessage: string, privateKey: string) {
const rsaPrivateKey = {
key: privateKey,
passphrase: '',
padding: crypto.constants.RSA_PKCS1_PADDING,
};
const decryptedMessage = crypto.privateDecrypt(
rsaPrivateKey,
Buffer.from(encryptedMessage, 'base64'),
);
return decryptedMessage.toString('utf8');
}
이상입니다
'개발 > react 생태계' 카테고리의 다른 글
[React] Line 4:8: Replace `REACT_APP_API_ENTERPRISE_HOST` with `·REACT_APP_API_ENTERPRISE_HOST·` (0) | 2022.07.06 |
---|---|
[React] Module not found: Can't resolve 'react/jsx-runtime' (0) | 2022.06.29 |
cra에서 proxy 사용하기 (0) | 2022.03.20 |
Centos6/7에서 Node.js 설치 (0) | 2022.03.15 |
'next'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다. (2) | 2021.02.16 |