대상 언어 플랫폼
- Net, Java, Node, C++
암복호화 기준
AES
- BlockSize: 128 bits
- KeySize: 256 bits
- Key: PBKDF2 로 생성된 Key
- 암호화 시 IV: 랜덤 16바이트
- 복호화 시 IV: 암호화 된 문자열을 Base64로 인코딩한 바이트 시퀀스의 앞 16자리
- Padding: PKCS7
- 작업모드: CBC
- 암호화 결과: IV(16바이트)에 암호화된 바이트 시퀀스가 합쳐진 값이 base-64로 디코딩 된 문자열
key 생성 알고리즘
- PBKDF2 사용
- Password : 지정된 암호
- Salt : 암호를 UTF8로 인코딩한 바이트 시퀀스를 SHA256으로 해시한 바이트 시퀀스
- Iteration Count : 1000
- 해시 알고리즘 : SHA1
- SHA1은 보안상 위험하나 .Net std 2.0에서는 SHA1만 지원하기 때문에 SHA1을 사용
- MS에서는 보안문제로 SHA1보다는 SHA256이상을 권고
- .Net std 2.0 상위 버전에서는 SHA256 사용 가능
Node
- 암호화 (ENCRYPT)
1 | const crypto = require('crypto'); |
- 복호화 (DECRYPT)
1 | const crypto = require('crypto'); |
아래 제공된 비밀번호와 원본 문자열로 Node로 암호화 된 문자열을 다른 언어의 AES로 복호화가 되는지 검증 할 수 있다.
- 원본 문자열: 123Apple.456TENET@Node
- 암호: P@ssw0rd.Node
- 암호화 된 문자열: NVRONGwzRUUuQVQyZG9AZVawSBA0/3VPmOnljnL+5HhOariKM5KGZwJbe3Zi48ca