난수생성

해쉬함수

메시지인증코드

패스워드기반 암호화

* 난수화된 토큰 인증 TokenLogin.java
- 로그인된 사용자에게 서버가 두개의 토큰(공개토큰, 비밀토큰)을 발급하고 클라이언트는 이를 이용하여 난수화된 로그인정보를 생성하여 자동로그인에 사용함

대칭키 암호

공개키 암호

전자서명

RSA 종합 예제 RSATest.java

Bouncy Castle 이란? Bouncy Castle 은 확장된 기능을 가진 자바암호라이브러리로 인증서 활용 환경이 잘 되어 있음.
Bouncy Castle 이용 환경 구축: http://www.bouncycastle.org/latest_releases.html 에서 http://www.bouncycastle.org/download/bcprov-jdk15on-149.jar 파일을 다운로드하여 현재 사용중인 workspace에 저장. 프로젝트에서 위의 jar 파일을 사용하도록 설정.
이클립스에서 외부 JAR 파일 추가하기: 프로젝트폴더->오른쪽마우스->속성(Properties)->Java Build Path->Liberaries->Add External JARs->다운로드받은 jar파일 선택->OK

SSL 인증서 활용하기
- 서버 EchoServer.java
- 클라이언트 EchoClient.java

인증서 활용하기
- 공인인증서 읽어오기 CertViewExample.java
- 공인인증서 유효성 검증하기 CertValidateExample.java

인증서 종합 활용 예제: 인증서 생성, 인증서 저장, 암호화, 전자서명 CertificateTest.java

* PKMS (Private Key Management Service), 개인 키관리 서비스 PKMS.java
- 사용자가 여러대의 컴퓨팅 기기들을 사용하는 유비쿼터스 환경에서 기기별로 서로 다른 기기인증서를 발급하여 사용할 수 있도록 하는 개인 키관리 서비스
- 사용자가 하나의 인증서에 기반하여 스스로 여러 기기들에서 사용할 수 있는 기기인증서를 발행하여 사용함

두 수의 최대공약수 구하기 GCD.java
역수 계산하기(확장유클리드 알고리즘) ExtendedEuclid.java
모듈러승산 계산하기(Square-and-Multiply) SquareMultiply.java
모듈러승산 테이블 만들기 ExpTable.java

BigInteger 클래스에서의 사칙연산 테스트 BIMath.java

RSA 알고리즘 RSABI.java
ElGamal 암호화 알고리즘 ElGamalBI.java
Schnorr 전자서명 알고리즘 SchnorrSigBI.java
비밀서명(Secret Signature) SecretSig.java

Diffie-Hellman 키합의 DH.java
은닉서명(Blind Signature) BlindSig.java
영지식증명 ZKPSchnorr.java
영지식증명(Non-Interactive) ZKPSchnorrNI.java