(문자열 주입 / 추출 원리 참고 : https://github.com/kyj9447/imageSignerAndValidator)
(/lib/main.dart)
Key Pair 중 공개 키를 가지고 있습니다.
(현재 소스에는 문자열 "Hello, World!"를 암호화 한 뒤 주입합니다.)
+ 기기의 자이로스코프 값을 읽어 버튼 아이콘 회전, 사진 저장시 적절한 방향으로 회전하는데 사용
(/assets 폴더에 public_key.pem 파일이 필요합니다. - 문자열 암호화용 키 / 소스에 포함됨)
flutter clean
flutter pub get
flutter build apk
(/server/app.js)
Key Pair 중 개인 키를 가지고 있습니다.
암호화된 문자열이 주입된 이미지 submit -> 암호화된 문자열 추출 -> 복호화하여 내용 확인
+ 서버에 빌드된 .apk 파일을 다운로드 받을 수 있는 링크 제공.
(/server/SSL 폴더에 cert1.pem, privkey1.pem, chain1.pem 파일이 필요합니다. - HTTPS 서버용 키 / 별도 발급 필요)
(/server 폴더에 private_key.pem 파일이 필요합니다. - 문자열 복호화용 키 / 소스에 포함됨)
cd server
npm install
node app.js
START-VALIDATION (시작지점 문자열 - 복호화됨)
Hello, World! (주입된 문자열 - 복호화됨)
Sxu/jim2TwEV8US4tQxNuN8a/jnsFkYLsRW59g36oQ3 (암호화된 문자열의 일부(복호화 불가능))
(암호화된 문자열의 길이와 사진 픽셀 수(=길이) 차이에 의한 것이며 정상적인 출력임)
END-VALIDATION (끝지점 문자열 - 복호화됨)
(=이미지를 잘라낸 경우 or 이미지의 일부 픽셀을 조금이라도 수정한 경우)