2012-05-22 3 views
0

저는 최근에 텍스트 파일을 암호화하고 해독 할 수있는 응용 프로그램을 만들려고했지만 키와 텍스트 파일도 전송할 수 있습니다. 다소 제한적인 Java 지식을 추가하는 것이 실제로 가능하지만 나에게는 훌륭한 가이드 또는 자습서가 있습니다.Java 암호화 - 정말 어려운가요? lic

내가 원하는 것은 암호화 키 생성, texfile로드, 키로 파일 암호화, 별도의 파일에 키 저장, 파일 및 키를 다른 시스템에 이메일로 보내기, 키로드,로드 textfile, 텍스트 파일의 암호를 해독합니다.

정말 개인 및 공개 키 등을 사용해야합니까 ?? 보안, 실험, 도움, 포인터에 대해 걱정하지 않습니까?

+0

당신이하려는 것은 암호의 바닥을 배우는 것입니다. 그것은 당신이 시작해야하는 방법이 아닙니다. 자신을 함정에 빠뜨리고 있습니다. 암호화는 특정 보안 문제에 대한 해결책입니다.먼저 보안에 대해 읽은 다음 (예 : Bruce Schneier 저서 또는 더 많은 초급 책자) 암호화를 실험합니다. 이렇게하지 않으면 암호화로 모든 것을 해결하려고 노력할 것이고 더 나 빠지게 될 것입니다. * 키 관리 *는 어렵습니다. –

답변

1

공개 키 암호화는 현재 savest로 간주됩니다. 여기에서는 보안 채널을 통해 "공유 된 seceret"을 전송할 필요가 없기 때문입니다. 사람들은 공개 키로 만 데이터를 암호화 할 수 있지만 해독하기 위해서는 개인 키가 필요합니다. 자세한 내용은 Wikipedia page on Public-Key-Cryptography을 참조하십시오.

키 처리가 쉬우면 암호화 자체가 필요합니다. 일반적으로 공개 키 알고리즘은 대칭 접근 방식과 비교할 때 성능상의 단점이 있습니다.

공개 키 암호화를 피하려면 대칭 알고리즘 (예 : AES)을 사용할 수 있습니다.

3

가 없음이 비대칭 암호에 의해 것, 개인/공개 키를 사용할 필요가 없습니다 :

빠른 구글 검색을 시작하는 데 도움이이 링크를 보여 주었다 . 당신이하려고하는 것은 암호화와 복호화에 동일한 키가 사용된다는 것을 의미하는 대칭 암호화입니다.

당신의 질문이 어떻게 작성 되었기 때문에 나는 암호와 관련하여 많은 지식이 없다고 생각합니다. 어떤 경우든지 어떤 종류의 구현을 시작하기 전에 읽는 것이 더 나을지도 모릅니다 (예 : 위키 피 디아 기사 대칭/비대칭 암호화, 스트림 암호 작성자, 블록 암호 작성자 등에 관한 정보).

구현과 관련하여 암호화 알고리즘을 선택해야합니다. 예를 들어 AES를 사용하는 것이 좋습니다. 사람들이 말하는 내용을 알고있는 사람들이 자주 추천하기 때문입니다 (예 : "Practical Cryptography"책에서 자세한 내용에 관심이 있다면 좋은 읽을 거리가 될 것입니다!). 이렇게하고 싶다면 온라인에서 사용할 수있는 예제가 많이 있거나 그냥 this one처럼 quesiton을 봐주세요.

+0

매우 제한된 지식, 당신 말이 맞아요, 조금 읽을 것입니다. 대칭 암호는 정확히 내가하고 싶은 것인데, AES가 그와 함께 갈 수있는 가장 좋은 방법입니까? – RyanSoper

+0

음, "최고"는 이러한 종류의 영역 (암호화)에서 정의하기 어렵지만 "Andvanced Encryption Standard"이므로 광범위하게 사용되며이 분야의 가장 밝은 마음으로 일종의 경연 대회에서 선정되었습니다 , 그것은 확실히 공정한 선택입니다. 그러나 항상 속도/보안/리소스 요구 사항의 균형이 있으므로 특정 유스 케이스 (예 : 매우 빠르면 보안은 특수 효과)보다 다른 알고리즘이 더 좋을 수 있습니다. 사용 가능한 예제 코드의 측면에서, 당신이 AES에 잘못 갈 수 없다고 말하고 싶습니다. – NoUsername

0

암호화 API를 평가할 때 유의해야 할 점은 보안이 가장 중요한 관심사로 설계된 것입니다 (분명히 :). 이는 그들이 작성한 민감한 정보의 모든 바이트, 모든 위치에 대해 특별한주의를 기울인다는 것을 의미합니다. 암호와 일반 텍스트가 모두 포함됩니다. 예를 들어 프레임 워크가 String 암호를 허용하면 Strincg이 제어 할 수 없으므로 보안을 위반합니다. char 배열을 받아들이면, 클라이언트는 사용 후 배열을 제로 아웃 할 수 있습니다. 동일한 원칙에서 비롯된 많은 다른 예가 이러한 API에서 발생합니다.