개발/react 생태계
[React] RSA in react.js and node.js
도깨비!
2022. 6. 24. 00:49
반응형
비밀번호를 전송할때 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');
}
이상입니다