그림 그리는 개발자
  • javascript 에서 rsa 암호화, 복호화 하기
    2023년 08월 26일 13시 20분 06초에 업로드 된 글입니다.
    작성자: 루루개발자

    이번 글에서는 javascript 에서 rsa 암호화 및 복호화 하는 방법에 대해 공유드리고자 합니다.

     

    코드 공유

    import { JSEncrypt } from 'jsencrypt';
    
    export function encrypt(data: string, key: string): string {
      const sign = new JSEncrypt();
      sign.setKey(key);
      return sign.encrypt(data).toString();
    }
    
    export function decrypt(encData: string, key: string): string {
      const sign = new JSEncrypt();
      sign.setKey(key);
      return sign.decrypt(encData).toString();
    }

    jsencrypt 라는 패키지를 활용하여 위와 같이 rsa 암호화, 복호화 하는 함수를 작성해본 것을 공유드립니다. typescript 로 작성하였습니다.

     

    rsa 키 생성 방법

    1) 아래 명령어로 private key 를 생성합니다. (keypair_priv.pem 을 변경하여 원하는 파일명으로 하셔도 됩니다.)

    openssl genrsa -out keypair_priv.pem 2048

    2) 아래 명령어로 방금 생성한 private key 의 public key 를 생성합니다.

    openssl rsa -in keypair_priv.pem -pubout -out keypair_pub.crt

     

    Public Key 로 복호화 하는 것은 미작동

    위에 공유드린 javascript 코드를 테스트 해보면, public key 로 암호화 한 것을 private key 로 복호화 하는 것은 정상 작동하지만, private key 로 암호화 한 것을 public key 로 복호화 하는 것은 작동하지 않았습니다. 이론상으로는 가능한 것으로 알고 있어서 혹시나 하는 마음으로 다른 패키지로도 테스트를 해보았지만, 이 역시도 동일한 현상이 발견되었습니다. 이 부분에 대해 자세히 알고 계신 분이 있다면 댓글로 의견 남겨주시면 감사하겠습니다!

    댓글